您的位置:首页 > 其它

支持向量机(SVM)

2016-06-09 14:29 155 查看
(本文介绍什么是SVM,SVM推导公式等。所有内容来自Anrew Ng教程)

SVM(support vector machine)是一种二分类模型,其基本模型定义是期望特征空间上分类间隔最大的线性分类器。

1.1 SVM起源-函数间隔和几何间隔

首先我们考虑,在逻辑回归中(可参见前面逻辑回归章节内容),数据被分类为正样本的概率被表示为p(y=1|x;θ)=hθ(x)=g(θTx)。那么对于一个新样本数据,如果有hθ(x)≥0.5,或者说有θTx≥0时,我们就认为该样本属于“正样本”,拥有标签“1”,相反,则样本属于“负样本”,拥有标签“0”。实际上,如果θTx越大,根据sigmod函特性,hθ(x)=p(y=1|x;θ)就会越大,说明该样本被分类为“正样本”的把握(概率)越大。所以对于逻辑回归的非正式说法可以表达为:对于给定的若干个训练数据,我们期望求得一个参数θ使得对于“正样本”(y(i)=1)有θTx(i)≫0,而对于“负样本”(y(i)=0)有θTx(i)≪0,满足这样条件的参数θ我们才会有更大的把握使得训练集中的样本都被正确归类。这个概念和后文中提到的“函数间隔”是相通的。

从另外一个角度来考虑,观察下图,实线表示样本点分类界面,叉号点表示“正样本”点,“圆圈”点表示“负样本”点。对于图示中的三个点,我们可以说,点A距离决策边界是最远的,如果对A附近的点进行类别预测,我们将有足够的把握说该样本属于“正样本”;而对于样本点C,距离决策边界是最近的,当决策边界稍微发生偏移,将会影响该样本点的类别判定,所以说对于样本点C被分类为“正样本”这件事,我们的把握是很小的;而样本点B距离决策面的距离介于样本点A和样本点C之间,对于该样本点被分类为“正样本”的把握自然介于A和C之间。总结上面的说法,对于给定的训练数据,我们期望寻找一个分界面,使得我们有足够的把握使得所有样本被正确分类,按照上面的推理说法,我们期望所有样本点距离分界面的距离越远越好。这种说法刚好对应于后文提到的“几何间隔”的概念。



接下来,我们将函数间隔和几何间隔进行数学描述,在这之前,首先对分类问题的数学表达进行重新描述。

考虑二分类问题,寻找线性分类器wTx+b=0对数据进行分类,数据标签为y∈{1,−1}。则分类器模型为(注意在线性回归和逻辑回归中,我们使用的模型参数都是θ,但这里用w和b代替θ),

hw,b(x)=g(wTx+b)

且有,当z≥0时有g(z)=1;当z<0时有g(z)=−1。与逻辑回归不同的是,这里我们并没有使用sigmod函数,通过分类概率来分析样本的所属类别,而是直接通过符号对类别标签预测为1或者-1。

1.1.1 函数间隔

给定训练集S=(x(i),y(i)),i=1,⋯,m,定义函数间隔为γ^(i)=y(i)(wTx+b)。当有y(i)=1时,如果我们期望函数间隔尽可能大(此时样本被正确分类具有较大把握),就需要使得wT+b为一个较大的正数;类似的,当有y(i)=−1时,如果我们期望函数间隔尽可能大,就需要使得wT+b为一个绝对值较大的负数。总而言之,如果有y(i)(wTx+b)>0,则有所有样本被正确分类,而函数间隔越大,则样本被正确分类的把握越大。

那么,给定一个训练集S=(x(i),y(i)),i=1,⋯,m,定义训练集S的函数间隔为所有样本中最小的函数间隔,即

γ^=mini=1,⋯,mγ^(i)

但是函数间隔存在一个问题,当参数w和b同时放大或缩小相同的倍数时,(w^Tx+b)也会被按照相同比例缩放,函数间隔也会被放大或缩小,但其实(w,b)和(sw,sb)(s为缩放比例)对应的是同一个分界面。为了解决这个问题,便由此便引入“几何间隔”的概念。

1.1.2几何间隔

几何间隔表征的是样本点到分界面的距离。如图所示,



实线表示分界面(w,b),w表示垂直于分界面的向量,设正样本A点x(i)到分界面的投影为B,且到分界面的距离为γ(i)。那么B点可以表示为

x(i)−γ(i)w||w||

又由于B点是位于分界面wTx+b=0上的,所以满足方程,

wT(x(i)−γ(i)w||w||)=0

变换公式,可以得到样本点到分界面的距离γ(i)为,

γ(i)=wTx(i)+b||w||=(w||w||)Tx(i)+b||w||

由此,我们可以按照函数间隔的方式定义几何间隔为,

γ(i)=y(i)((w||w||)Tx(i)+b||w||)

注意的是,如果有||w||=1,那么这个时候的几何间隔和函数间隔的表达式是一样的。另外,几何间隔是不会像函数间隔那样存在参数缩放而产生相应缩放的问题的。这一点非常重要,在后面求解分界面参数时,我们就是利用这一性质使得||w||=1,几何间隔不发生变化,而计算会相应变得更加方便!

同理,对于训练集S=(x(i),y(i)),i=1,⋯,m,几何间隔定义为所有样本中的最小几何间隔,即,

γ=mini=1,⋯,mγ(i)

1.2 SVM模型

通过上面的分析我们知道什么是函数间隔,什么是几何间隔,而几何间隔因不存在参数缩放问题而要优于函数间隔。对于二分类问题,我们期望找到一个线性分类器,可以使得所有样本距离分界面的距离越大越好,也就是说所有样本的几何间隔要尽可能得大,这个思想正是SVM思想的核心。

因为SVM是线性分类器,所以我们首先假设样本是线性可分的,那么接下来介绍,如何寻找该线性分界面,使得样本数据的几何间隔最大化。该问题的数学描述为,



也就是说,我们期望最小化m个数据样本的几何间隔,另外,条件||w||=1是为了保证几何间隔和函数间隔一致而引入的。但是对于这样的优化目标,并没有直接的优化手段可以优化,因为条件||w||=1是非凸的。所以,为了消除这个约束我们将问题重新定义为,



也就是,通过几何间隔和函数间隔转换公式γ=γ^/||w||,将问题重新描述,但求解目标是一致的。

但是这样,又引入了一个非凸函数γ^/||w||。为了消除这种求解麻烦,我们考虑到前面的介绍,几何间隔大小是不受参数大小缩放影响的,那么我们可以通过调节参数w,b使得函数间隔为1,即γ^=1,而此时的几何间隔并不会发生变化,那么此时的求解问题变换为,



注意,这里的目标函数是min12||w||2与max1||w||的效果是一致的。

最终,我们将SVM求解目标转化为一个可以方便求解的形式,满足目标函数的参数确定一个最优二分类器。

1.3SVM优化求解

1.3.1拉格朗日对偶问题

在说明如何优化求解SVM目标函数之前,首先来介绍如何求解带约束的优化问题。

优化问题一般三类:不带有约束条件、带有等式约束条件但不包含不等式约束条件、带有不等式约束条件(也可包含等式约束条件)。对于第一类求解比较简单,可以通过求导直接得到。而对于带有等式约束的优化问题,通常通过构造拉格朗日函数,并分别对各个变量及拉格朗日乘子求导得到。而对于带有不等式约束,也就是像SVM优化问题这样的,则不能采用上面的方法求解。接下来我们详细分析如何求解该问题。

+++++++++++

首先,对于含有等式约束的优化问题,如,



求解方法为构造拉格朗日公式,

ζ(w,β)=f(w)+∑i=1lβihi(w)

βi为拉格朗日乘子。求解方法是分别对w和β求导并为0,则可以求解出变量w的最优值,即,

∂ζ∂wi=0;∂ζ∂βi=0

+++++++++++

而对于含有不等式约束的优化问题,



同样构造拉格朗日公式,



接下来,我们来考虑这样的一个等式,



分析该式子的含义:当有w使得任意一个约束不成立时,即如果有gi(w)>0或者hi(w)≠0时,为了使得该等式最大化,拉格朗日乘子αi和βi会变成为无穷大,所以最终左值为无穷大;而当w满足所有约束时,拉格朗日系数取0才会使得左值最大,且有左值等于f(w),也就是有,



那么,为了使得与原始优化目标等效,我们定义问题,



很明显,该问题与原始问题是一致的,因为要使得θP(w)最小,就是当所有w均满足条件,而此时最小值就是f(w)。为了表示方便,先定义p∗=minwθp(w)。

+++++++++++

接下来,定义另一个问题,



那么对偶优化问题被定义为,



我们可以看到,对偶优化问题与原始问题基本是一样的形式,除了颠倒了最大化符号和最小化符号而已。同样定义d∗=maxα,β;αi≥0θD(w)。那么原始问题和对偶问题有什么关联呢?

+++++++++++

对于原始问题和对偶问题,很容易可以看出,满足下面的不等式条件(可以理解为最小化的最大化是要小于最大化的最小化的),



假如有,原始问题和对偶问题不是不等式关系,而是两者等效的,那么我们求解原始问题和对偶问题都会得到一致的解,而当原始问题不好求解的时候,就可以通过求解对偶问题来降低求解难度。那么,很自然地考虑,在什么时候原始问题和对偶问题的解释一致的呢?实际上,当满足一定条件时,两个问题的解是等价的,而这个“一定的条件”,就是接下来要说的KKT条件。

1.3.2KKT条件

如果有,函数f和h为凸函数,h是仿射函数,w∗、α∗、β∗满足下列条件(KKT条件)。则有:w∗、α∗、β∗是原始问题和对偶问题的最优解。而如果原优化函数满足Slater条件,即存在一点w满足gi(w)<0时,w∗、α∗、β∗满足KKT条件和w∗、α∗、β∗是两个问题的最优解是可以互推的(详细可参见内容http://www.duzelong.com/wordpress/201507/archives1050/)。下列式子是KKT条件公式,



在后面的分析中,我们会提到对于当前的SVM优化目标是满足KKT条件,所以求解对偶问题和求解原始问题是等价的,这样就把原来的求解目标转换为对偶问题的求解上。接下来,将仔细道来。

1.3.3最优间隔分类器优化问题

上面提到可以通过求解对偶问题来变向求解原始问题的解,首先我们需要明确这样做的提前是要有目标函数和不等式约束是凸函数,最优解满足KKT条件或者不等式约束满足Slater条件,此时对偶问题和原始问题的解值将是一致的。那么SVM优化模型是否符合这个场景呢?如果符合又该如何求解对偶问题呢?

首先,在1.2部分我们讲到如何设计SVM优化函数,即,



为了符合优化问题的一般形式,我们将不等式约束调整为,gi(w)=−y(i)(wTx(i)+b)+1≤0,那么拉格朗日函数为,



其中αi为拉格朗日乘子,注意的是这里只有不等式约束而没有等式约束。

构造对偶问题为,maxαminw,bζ(w,b,α)

我们要想通过求解对偶问题来求解原始问题,必须要保证两者的求解是等效的。而我们知道优化函数在满足凸函数的提前下,也满足Slater条件(即,存在一个样本点使得gi(w∗)=0)。Slater条件满足是因为:在最开始设计优化函数时,我们将数据集的函数间隔设置为1,也就是数据集中距离分界面最近的点的函数间隔为1,而这些点是满足gi(w)=0的,也就是存在一些样本点,使得不等式约束严格成立的。所以说,求解对偶问题就相当于求解原始问题,且有使两者成立的最优解α∗,w∗,b∗是满足KKT条件的。

有趣的是,在KKT条件中,有α∗igi(w∗)=0,而我们又知道,α∗i≥0,gi(w∗)≤0,而要使得等式成立,则要么有α∗i=0,要么有gi(w∗)=0。而当α∗i>0时,必须有gi(w∗)=0,对应的点恰好是距离分界面最近的样本点,而这些样本点的函数间隔是为1的(考虑函数间隔的定义),也就是说使得α∗i非零的点为那些函数间隔为1的点;而对于其余函数间隔大于1的样本点,其拉格朗日乘子都是为0的。记住,这一点很重要!我们可以看下面这个示意图,实线表示最优分界面,叉号表示正样本,圆圈表示负样本,位于虚线上的三个点表示距离分界面最近的点,其函数间隔为1,这些点往往占总体数据集的一小部分,我们称之为“支持向量”,他们的作用我们会在后面再次提到!



接下来,将回到如何求解对偶问题。首先根据 minw,bζ(w,b,α),分别将拉格朗日函数对w,b求导并为0,可以得到,

∇wζ(w,b,α)=w−∑i=1mαiy(i)x(i)=0

则有,

w=∑i=1mαiy(i)x(i)

对b求导得到,

∇bζ(w,b,α)=∑i=1mαiy(i)=0

将两个式子带入原始拉格朗日函数中,可以得到,

ζ(w,b,α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)−b∑i=1mαiy(i)

又因为最后一项式子为0,所以有,

ζ(w,b,α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)

将所有公式综合起来,可以得到对偶问题的数学表达,



考虑,如果我们可以通过某种方法将对偶问题的αi参数求解出来(稍后章节中会进行介绍),那么可以根据w=∑mi=1αiy(i)x(i)将参数w求解出来;而如果已知了参数w,那么b可以通过下列式子求解出来,



这样,分界面wTx+b=0我们就可以确定了。当对于一个新的样本到来时,我们可以通过判断wTx+b的符号来确定样本的类别了:也就是如果有wTx+b>0,则样本标签为“1“,否则,样本标签为”-1“。

最后,我们来进一步的分析,对于新样本判断分类时,有公式,

wTx+b=(∑i=1mαiy(i)x(i))Tx+b=∑i=1mαiy(i)<x(i),x>+b

其中,<>表示内积,至于为什么要表示成内积的形式,这一点在核SVM部分很有用!在前面我们已经提到,只有在支持向量上的样本点,对应的αi才会不为0,而对于非支持向量上的样本点,都有αi=0,因此对于上面的判别公式,只有少部分的样本是参与计算的,这样使得算法具有较好的运算性能。

至此,已经将SVM在线性分类情况下的道理讲清楚了。但目前的SVM分类器的处理能力还比较弱,只能处理线性可分的情况,而对于线性不可分的数据,SVM会使用核函数进行处理。这在下一章节中会进行阐述。

如有问题,欢迎指正~**重点内容**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息