支持向量机(下)

回顾上节主要引出了最优间隔分类器的模型,并简述了支持向量的含义,接下来这节将围绕支持向量机模型及其优化方法SMO来展开。

最优间隔分类器模型的原始最优问题:

为了求解模型,得到它的对偶最优问题:

假设函数h(w,b)=g(wTx+b)为:

从而引出了核函数的重要概念,对于支持向量机的优化方法必不可少。

同时,在求解模型的过程中会遇到有离群值的干扰,需要对模型做出修正,提出软间隔的概念。

本节大纲:

  • 核函数
  • 软间隔
  • SMO算法

一、核函数

1. 特征映射

问题的原始属性为x,x1,x2,在输入学习算法之前需要对它们进行一些处理,从而得到输入特征,假设Φ为原始属性到输入特征的特征映射(feature mapping):

2. 核函数

(1)基本定义

与之前的问题相关,当我们将原始属性<x,z>的内积换成输入特征<Φ(x),Φ(z)>的内积,就得到了核函数(kernel)的定义:

只要得到Φ(x),Φ(z),再计算它们的内积就可以很容易地得到核函数K(x,z),即使Φ(x)是一个高维向量,需要花费很大的计算代价,但是核函数的有效计算可以让支持向量机学习高维空间的特征。接下来举个例子具体体会一下。

最终的结果就是核函数的定义。

特征映射Φ(x)为:

计算Φ(x)需要O(n2),而计算K(x,z)只需要O(n)。

(2)一般形式

考虑另外一个核函数的形式:

特征映射Φ(x)为:

参数c控制了xi与xiyi之间的相对权重。

更一般的核函数式子:

特征映射Φ(x)为维,计算Φ(x)需要O(nd),计算K(x,z)仍只需要O(n),因此不需要明确地表示出在非常高维的特征空间中的特征向量。

(3)高斯核

那么到底如何构造核函数呢?

下面考虑一个更为复杂的核函数,由于Φ(x)与Φ(z)是两个向量,如果当它们十分接近时,我们期望K(x,z)十分得大;当它们相距甚远时,我们期望K(x,z)很小。换句话说,就是来通过K(x,z)来衡量Φ(x)与Φ(z)之间的相似度或x与z之间的相似度。核函数可以采用以下的形式:

当x与z十分接近时,K(x,z)的值为1;当x与z相距甚远时,K(x,z)的值为0。这个核函数叫做高斯核(Gaussian kernel),它就是支持向量机所采用的核函数。

(4)核的合法性

接着,问题又来了,我们如何判断存在特征映射Φ,核函数对于所有的x与z都成立,即核函数的合法性

假设K是核函数,同时K也是一个mXm的方阵,Kij=(K(i),K(j)),称为核矩阵(Kernel matrix)。如果核是有效的,K必须是对称矩阵,因为两个输入x,z的内积与两者的前后顺序无关。用Φ(x)表示Φ(x)的第k个值,于是有:

因此,K是半正定矩阵。也就是说,如果K是一个合法的核,那么它所对应的核矩阵是对称的半正定矩阵。事实上,这是一个充分必要条件,符合Mercer定理

线性分类器对原始空间中并非线性可分离的数据进行分类,SVM输出非线性决策边界的整个过程,是一个求解凸优化问题的过程。许多其他算法可以写成内积的形式,就可以将内积换成核,将特征空间映射到无限维空间,以解决低维空间无法实现可分的情况。

 二、L1 norm软边界SVM

支持向量机的算法有个前提条件是假设数据集是线性可分的,但是有时并不能保证所有情况下都线性可分或是得到满意的分离超平面。如下图所示,当存在一个较远的离群值(outliers)时,超平面出现了巨大的摆动,使得间隔(margin)较小。

为了满足非线性分类并减小离群值的影响,需要对最优间隔分类器算法进行修正(调整正则化的L1值):

通过将函数间隔值修正为1-ξi,增加目标函数的惩罚项Cξi,其中C控制目标函数||w||2最小和约束条件中的函数间隔最小值为1这两者之间的相对权重。

拉格朗日函数为:

它的对偶形式为:

注意到这里改变的约束条件仅是αi的取值范围,同时满足KKT互补条件。

L1 norm软边界SVM可以处理非线性分隔情形,包含异常数据的情况时,选择不进行完全正确的分隔来解决这个问题。现在还没解决的问题只剩下这个对偶问题的求解,下面引入几种解决思路。

三、序列最小优化算法(SMO)

1. 坐标上升法(Coordinate ascent)

考虑解决无约束最优问题:

联想到之前已经学习过的优化解法,如梯度上升法和牛顿法,现在来介绍一种新的方法——坐标上升法。

固定αi以外的所有参数,求解W(αi)函数的最优值,然后再依次分别固定其他参数,循环优化W(α),使得它的增长最大,α选择的一般顺序是α1,α2,...,αm,α1,α2,...。以下是一个含有两个参数的W(α)坐标上升法的优化过程,依次沿着坐标平行的方向取最大值。

当固定其他参数而求解某个参数的最优值时,坐标上升法收敛速度要好于牛顿法。

2. SMO(sequential minimal optimization)

回归L1 norm软边界SVM模型的求解问题,实际上是求出满足两个约束条件,同时使目标函数W(α)最大时的αi值,如果采用上升坐标法来解决这个问题,固定α2,...,αm的值,来求W(α)最大时α1的值,这是行不通的。

因为KKT条件约束的存在,当其他值确定时,α1的值也就固定了,它们之间是固定的相关关系,此时就无法来优化W(α)的值。改进的方法当然存在,只需要同时改变两个αi即可解决。基本步骤为:

  • 使用试探法(heuristic)选择两个变量αi和αj用于更新值;
  • 固定其他的α值,反复地利用αi和αj两个值来优化W(α);
  • 重复以上步骤直到算法收敛,找到W(α)的全局最大值;
  • 通过检验收敛容忍参数( convergence tolerance parameter)tol(0.01~0.001)是否满足KKT条件来判断是否收敛。

SMO算法之所以是个有效的算法,重点在于更新计算αi和αj的值十分快捷。

下面来推到出αi和αj的更新式子。由约束条件知:

可以转化为以下式子和示意图:

一定存在下限L和上限H使得α2满足[0,C],同理存在ξ(直线)使得α1满足[0,C],使它落在直线上或L上。通过α1与α2之间的关系可以减少参数的个数:

更新参数后,W(α)可以表达为α2的二次函数:

通过选择合适的α2值优化二次函数就可以得到W(α)的最大值。

如果想了解更多关于试探法(heuristic)选择变量αi和αj的值和SMO算法运行时如何更新参数b,可以参阅John Platt的论文。

参考文献:

Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines

时间: 2024-08-07 21:18:25

支持向量机(下)的相关文章

【机器学习】算法原理详细推导与实现(五):支持向量机(下)

[机器学习]算法原理详细推导与实现(五):支持向量机(下) 上一章节介绍了支持向量机的生成和求解方式,能够根据训练集依次得出\(\omega\).\(b\)的计算方式,但是如何求解需要用到核函数,将在这一章详细推导实现. 核函数 在讲核函数之前,要对上一章节得到的结果列举出来.之前需要优化的凸函数为: \[ min_{\gamma,\omega,b}->\frac{1}{2}||\omega||^2 \] \[ y^{(i)}(\omega^Tx^{(i)}+b) \geq 1 ,i=1,2,.

关于机器学习中支持向量机相关问题

前言 在机器学习中,分类问题占了很大一部分,而对于分类问题的处理有很多方法,比如决策树.随机森林.朴素贝叶斯.前馈神经网络等等:而最为常见的分类需求一般是二分类问题,即将样本分为两个集合,然后通过学习某些参数,对新的输入进行识别并划分到正确的类别中. 在解决分类问题中,应该说线性分类器就是最为简单的一类,虽然说起来较为简单,但其能处理的情况还是比较多的,而最为常用的一种线性分类器就是所谓的支持向量机(Support Vector Machine,简称SVM):其基本原理就是构建一个(对于而分类而

【机器学习】算法原理详细推导与实现(六):k-means算法

[机器学习]算法原理详细推导与实现(六):k-means算法 之前几个章节都是介绍有监督学习,这个章节介绍无监督学习,这是一个被称为k-means的聚类算法,也叫做k均值聚类算法. 聚类算法 在讲监督学习的时候,通常会画这样一张图: 这时候需要用logistic回归或者SVM将这些数据分成正负两类,这个过程称之为监督学习,是因为对于每一个训练样本都给出了正确的类标签. 在无监督学习中,经常会研究一些不同的问题.假如给定若干个点组成的数据集合: 所有的点都没有像监督学习那样给出类标签和所谓的学习样

在R中使用支持向量机(SVM)进行数据挖掘(下)

书接上文 在R中使用支持向量机(SVM)进行数据挖掘(上) http://blog.csdn.net/baimafujinji/article/details/49885481 第二种使用svm()函数的方式则是根据所给的数据建立模型.这种方式形式要复杂一些,但是它允许我们以一种更加灵活的方式来构建模型.它的函数使用格式如下(注意我们仅列出了其中的主要参数). svm(x, y = NULL, scale = TRUE, type = NULL, kernel = "radial",

一步一步搞懂支持向量机——从牧场物语到SVM(下)

之前在数据挖掘课程上写了篇关于SVM的"科普文",尽量通俗地介绍了SVM的原理和对各公式的理解.最近给正在初学机器学习的小白室友看了一遍,他觉得"很好,看得很舒服",认为不发到blog上太可惜=  = 由于word转blog发布好麻烦,特别是图片什么的,所以我直接把文档转图片传上来好了(懒癌晚期) 里面的许多内容都是参考网上的大牛博客而来的(已列在参考资料中),自己进行了梳理和汇总,并对一些晦涩难懂的地方进行了更进一步的理解和说明,所以写得很长,但对于小白来说仔细读

支持向量机(SVM)算法

支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. 具体原理: 1. 在n维空间中找到一个分类超平面,将空间上的点分类.如下图是线性分类的例子. 2. 一般而言,一个点距离超平面的

SVM支持向量机-拉格朗日,对偶算法的初解

许多地方得SVM讲得都很晦涩,不容易理解,最近看到一篇不错的博文写得很好,同时加上自己的理解,重新梳理一下知识要点 http://blog.csdn.net/zouxy09/article/details/17291543 一.引入 SVM是个分类器.我们知道,分类的目的是学会一个分类函数或分类模型(或者叫做分类器),该模型能把数据库中的数据项映射到给定类别中的某一个,从而可以用于预测未知类别. 对于用于分类的支持向量机,它是个二分类的分类模型.也就是说,给定一个包含正例和反例(正样本点和负样本

python大战机器学习——支持向量机

支持向量机(Support Vector Machine,SVM)的基本模型是定义在特征空间上间隔最大的线性分类器.它是一种二类分类模型,当采用了核技巧之后,支持向量机可以用于非线性分类. 1)线性可分支持向量机(也称硬间隔支持向量机):当训练数据线性可分是,通过硬间隔最大化,学得一个线性可分支持向量机 2)线性支持向量机(也称为软间隔支持向量机):当训练数据近似线性可分时,通过软间隔最大化,学得一个线性支持向量机 3)非线性支持向量机:当训练数据不可分时,通过使用核技巧以及软间隔最大化,学得一

机器学习之支持向量机(Support Vector Machine)(更新中...)

支持向量机 支持向量机(support vector machines,SVMs)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题. 支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in