本文目的,站在一个小白的角度,从简单易懂的角度分析下SVM,有不对的地方还请指出,感激不尽
主要参考博文:
http://f.dataguru.cn/thread-371987-1-1.html
http://blog.csdn.net/dadouyawp/article/details/51059469
http://blog.csdn.net/lisi1129/article/details/70209945?locationNum=8&fps=1
http://blog.csdn.net/abcd_d_/article/details/45094473
在看本文前建议读者对逻辑回归有一定的了解,废话不多说,开始正题:
首先,我们先看一下下面这张图:
我们从简单易懂的二维举例,假设数据有正反两个分类,我们需要训练一个超平面,把这两个分类给分开,那上图的3条直线,哪一条是最优的呢?
SVM里的观点:距离超平面最小的样例,我们称之为支持向量,我们所要找的最优超平面,就是使支持向量到超平面距离最大,我们认为,这样的超平面,就是最优的,下面也是要想办法求出这个超平面。SVM的核心问题就是找到这一超平面
超平面:在一维空间里就是一个点,在二维空间里就是一条直线,三维空间里就是一个平面,可以如此想象下去,如果不关注空间的维数,这种线性函数还有一个统一的名称——超平面(Hyper Plane)!
我们假设这一超平面为,其中W转置后是横向量,X为纵向量,我们可以举个二维简单的例子来说明为什么超平面可以这样假设:x+y+1=0,此时W就是(1,1),X是竖着的(x,y),b=1,矩阵乘法后就是我们的假设x+y+b=0,在高维的情况也是同理。
其实不易于理解,我们再拿x+y+1=0举例说明下一步的问题,x+y+1=0是一条直线,在这条直线上的点,全部符合x+y+1=0,在这条直线的右边所有点,全部大于0,左边的点全部小于0,所以我们可以拿这条直线来分类,右边全部为正例,分类label用+1表示,左边全部为反例,用-1表示。
分类label为什么跟逻辑回归那样用0,1表示?这里其实是为了数学计算上的方便,先引入点到直线距离公式,此公式是二维平面的点到直线的公式,我们需要的是更加宽泛的样本到超平面的距离,所以上述公式我们一般化到
,这样以来,分母的绝对值可以去掉,但是分子还有绝对值,怎么办呢?没错,就是让分子去乘以分类标签label,如果某一样例被分为正例,那上式的分子为大于0,乘以label后也是大于0,如果某一样例被分类为反例,label为小于0,分子小于0,所以它们相乘后还是大于0(这样的假设是数据是线性可分的,当然数据若线性不可分,会用到松弛变量或者核函数解决),这样就能把上公式化为:
(公式一),其中y代表label。
下面我们就要谈谈怎么获取超平面了!!!
先引入需要优化的最核心的公式:
(公式二)。一点一点的来解释下这个公式,上面我提到过,SVM是要求这么一个超平面,这个超平面要距离支持向量最远,公式二中min表示的就是n个样本中距离超平面最近的点,也就是找到支持向量(min后面到公式结束就是距离公式),max表示支持向量最大,好吧,我承认说的有点绕,下面上个图解释下:
r1和k1就是支持向量(距离超平面最近的两个点),此时我们所要找的超平面,就是中间的红线,在解释下r1和k1为什么都等于1。我们要优化的目标是公式二,明显公式二太复杂了嘛,我们要想办法化简一下,在说明具体化简方法前,先提出几个概念
函数距离和几何距离:几何距离很好解释,就是公式一,在图像里就是我们眼睛所看见的点到直线的实际距离,而函数距离是,由公式可知,函数距离并不是点到直线的实际距离,因为在x确定的情况下随着w和b的增长,函数距离可以无限变大,同时我们还可以观察出,函数距离和几何距离只差了公式一的分母,从此,我们可以得出一个有趣的结论,随着w和b的同倍数改变,函数距离会发生变化,而几何距离不会发生变化。
提出函数距离后,就可以优化公式二了,注意到公式二这部分,min里面的正是函数距离,所以我们可以控制支持向量的函数距离为1(也就是上图为什么r1和k1等于1了),那么比支持向量更远的点,函数距离必然大于1,因为公式一显示,在w和b不变的情况下,距离直线越远的点,公式一必然大,而分母没有发生变化,那自然就是分子(函数距离)变大了。故函数距离
是大于等于1的,它的
直接就是等于1了。这样我们的核心优化公式就变成了
,s.t代表约束条件,是我们强制加的,所以后面的运算也要一直带着这一约束条件。
再进一步化简:
(公式三)
为什么我们能控制支持向量的函数距离为1?我们设wTx+b=a,两边除以a就是1了,我们总能通过控制w和b使得等式左边=1。
现在我们把我们的最终问题,优化到了求公式三,所满足的w和b。观察公式三,难道不是w取0,时,公式三取得最小值0吗?回答这个问题,先看一个图:我们所要求的核心公式二的值,就是对应此图的H与H1之间的距离,若w取0(无限逼近),则这个距离margin变的无限大,这个时候,所有的样本点(无论正样本还是负样本)都跑到了H1和H2中间,而我们原本的意图是,H1右侧的被分为正类,H2 左侧的被分为负类,位于两类中间的样本则拒绝分类(拒绝分类的另一种理解是分给哪一类都有道理,因而分给哪一类也都没有道理)。这下可好,所有样本点都进入了无法分类的灰色地带。造成这样的情况,原因是我们忘了考虑公式三的约束条件。
下面我们在分析公式三怎么求解
求一个带约束条件的min,这里用到一个数学方法,叫拉格朗日乘子法。把公式三转化为公式四(暂时不考虑公式三的min):
(公式四)
其中
α={α1,α2,⋯,αm},αi≥0(拉格朗日的要求)
稍微解释下公式四,其实拉格朗日乘子法很简单,带约束的min我们不好求,就想办法把这个约束加到公式里,这样就好求了,具体加的方法就是有多少个约束条件,就把这些约束条件乘以αi,再累计相加就行了,然后求求哪个变量的极值就是对哪个变量求偏导
这样以来,我们的核心约束公式又变麻烦了,不要急,我们会用一个简单的方法来求解:
首先,我们要知道有这样一个等式成立:
(公式五)
简单证明一下上式:当公式四满足公式三的约束条件 时, 公式四 关于α取最大是当α=0
的时候,这个时候的最大值就是
这样,公式三可以转化为(公式六),然后利用拉格朗日对偶性,进一步转换成:
(公式七)。对于这一步,我看了很多博客和视频,基本都没有提为什么这样解,最多也就是说,这样解比较方面,这样的描述我认为对初学者是很难理解的,所以我想用我的理解来分析一下,如果有不对的地方还请指出。是这样的,我们回到公式四,我们的目标是求公式三的min,为了求公式三的min我们转化到了公式四,而我们并不关心公式四的极值,但是我们找到了公式四公式三的关系,即公式五,通过公式五把求公式三min的问题转化到了求公式六,但是观察公式六可知,若先求max,再求min,又会回到公式三,故我们利用拉格朗日的一条性质,即对偶性(具体证明可以网上查一下,不过我觉得没必要搞太数学的东西,直接用就可以),转换到了公式七,到达公式七,我们的目的就达到了,成功把带约束求极值的问题转换到了没有约束的求极值,下一步再分析公式七如何求解w和b,最终确定这一超平面。
求解公式七:
很明显,第一步要先求,上面提到过,对于拉格朗日乘子法求变量极值,就对变量求偏导:
(公式八)
公式L(w,b,a)能取到min,w,b必满足上式,于是我们把上式带入L可以到的:
即:(公式九)
具体就是带进去算一算就出来了,这里就不详细描述了,不过要注意一点,有的课本或者博客把公式九的双求和符号写成1个,底下标出i,j其实是一个意思。
到这里,我们发现公式九并不包含我们超平面的w和b呀,怎么回事?
其实,观察公式八,我们可知,若求出,w便很容易求出,有了w,别忘了我们之前的强制设置支持向量的函数距离等于1,即
为1,便可以方面的求出b了。到现在我们的问题转化为求α。即:
在约束条件:
s.t :
下的最大值,此时的α
约束条件怎么来的?第一条,很简单,公式八带来的,第二条是拉格朗日乘子法带来的,拉格朗日乘子法要求乘子αi必须大于等于0
未完待续