您的位置:首页 > 其它

支持向量机SVM(Support Vector Machine)算法初解

2013-10-31 14:43 369 查看
其实SVM在去年的时候就接触到了,只是一直都属于模模糊糊的状态,最近跟着老板一起上机器学习的课,有种豁然开朗的感觉,于是乘机写下这篇博客。

每个算法都有一个优化的准则,SVM也不例外,他运用的是最大化margin的准则,如图所示:





这么多的红线都可以将样本分类,但是哪一条更好了,这就依赖于我们选取的准则。最大化magin的目标如上图2,使两类样本到分类面的距离尽可能的大。

说到距离,就要提到SVM里面用到的两个距离的概念:函数距离,几何距离。几何距离很直观,也就是我们上面说的margin,即点到直线的距离。根据点到直线的距离公式,得到

几何距离为下图1,函数距离为下图2。





下面要说一下这两个公式的性质:





根据这两个公式得到:几何距离不随着直线参数w的缩放而改变大小,而函数距离则成正比。这是一个对后面计算很重要的性质。

接着到了根据优化准则求我们的优化函数:



公式1的含义很直观,最大化几何距离并且要满足所有点到分类面的几何距离都大于我们最大化得到的这个几何距离,接着通过几何距离与函数距离之间的转换得到优化函数二:



下面要提到我们前面讲的缩放定理,由于函数距离随着参数w的变化而变化,而几何距离保持不变。所以我们可以任意的缩放w使函数距离=1,而不影响我们求的几何距离。于是我们得到了优化函数3:



以上就推到了我们的优化函数。

有了目标函数,接下来就是寻求一个方法可以求解他,正如logistic regression中要最大化似然函数,我们用的是梯度上升法。这边我们采用的是对偶优化的方法。

下面是一些数学知识,他们独立于我们的SVM求解问题...

首先,要说一个数学理论,像上面的公式这种求最值但含有不等式或者等式的优化问题,我们通常采用的一种方法叫拉格朗日法。这里不细说,直接套用拉格朗日公式:



下面的四个条件称之为KKT条件,是用拉格朗日法求解所得到的5个等式(不等式)条件。

接着还要讲一个关键知识点,称之为Min-Max问题:



上述是一个含不等式和等式的优化问题,并且已经用拉格朗日法表示出来了,下面



上面半个公式应该比较简单,说下下面半个公式,第一部分到第二部分,因为如果max L为无穷的话,那么min无穷就没有意义,所以可以直接舍去otherwise那个条件,根据

这 点接着就可以从第二部分推倒到第三部分。好,根据下面三个等式,我们的原始优化问题就可以用下面的公式表达:



转换为 [b]

[/b]
接着就是min-max转换了,



举个例子:一个班上的同学个子高矮不同,分为3个阵营,高中矮。你从矮阵营里面挑选最高的永远小于从高阵营的挑选的最矮的。当然等号成立的条件是全班同学的身高都相

同。

有了这个min-max转换就得到下面的公式:



转换为



上述过程就是下面这3个公式:



根据前面提到的求解朗格朗日的解的问题,那就是KKT条件。原来,KKT条件是原问题用拉格朗日法的解,现在根据上面3个等式知道他也是原问题的对偶形式的解。这就是我

们之前提到的对偶优化的方法。

到这边为止,数学的知识结束...

将我们上述的两种方法(拉格朗日方法,min-max方法)直接带入到SVM的优化问题中,这边的过程我就略去直接给出最后的公式。



上面的用红框圈起来的部分是为了保证KKT条件,或许会有疑问KKT条件好像不止这2个,但实际上另外的条件我们已经作为已知条件带入了公式中去了。以上就是SVM的最终

的优化问题。此时已经没有参数w了,只有拉格朗日因子alpha。得到sigma就可以下面公式得到参数w。



这个其实就是我们上面说的作为已知条件带入公式的另外的KKT条件之一。

这边还要提到一个问题,为什么这个算法叫"Support Vector"



看我们的KKT条件,我们知道最短的函数距离为1,此时g(w)=0,但是不是所有点的函数距离都等于1,即g(w)不等于0,带入KKT条件,知道这些点的alpha=0,再根据我们的

Decison Function知道他们对于函数f(x)的更新没有作用,由此如上图右边部分,只有在虚线上的点的alpha不等于0,对更新分类面有作用,其他的点都无效果。根据这些虚线

上的点和参数w就可以求到直线的截距b。



到这边基本的已经结束了,下面可能还有怎么求alpha,和svm面对不能线性分的情况,后面争取补充完...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息