感谢youtube上的视频对SVM的详细推导
https://www.youtube.com/watch?v=ZF2QR7nSUhg&list=PLOxMGJ_8X74Z1N3OcacUaCxiXaGNHtFw2
本文先对硬间隔的SVM进行详细的理论推导,支持向量机的基本思想其实是很简单的,但这个数学过程是真的有点复杂,尤其后面的SMO,别担心,本文没有,因为我也不知道到底咋写...对这个算法还不是特别熟悉,有问题请帮忙指出。
针对不同的分类问题,有以下三种形式的SVM
(一)数据是线性可分的,采用hard margin 就是说数据可以用一条直线将以区分,如下图所以,中间的线就是我们要距离间隔最大的线,就是我们要找到的超平面
(二)数据是近似线性可分的,采用soft margin 就是说数据在一定的错误容忍度上,可以用一条直线将以区分;如下图,如果按照第一种情况,会产生两个黄色的边界,因为受到一个红色异常点的影响,这两个边界的间隔很小,如果目前有一个黑色的待分类的点,按照黄色线的分类器,就会划分为红色,但实际上它可能是绿色,因为和绿色的聚集中心是比较近的。所以为了减少异常点的影响,我们允许分类器有一点错分的情况,这就是soft margin
(三)数据是线性不可分的,利用非线性的转换,提高数据的维度,使得数据在高维度上线性可分,称为kernel SVM。下图中左编的图是无法用一条线分割的,但是如果我们通过某些中变化,可能就会使得数据在高维度线性可分,比如右图的情况,在中间产生一个平面就可以将其区分。
u
该算法就是找到一个超平面,使得离“最近的点”的距离最大。下式
(0)
表示任何一点到超平面的距离,再
,表示找到最近的点,
离“最近的点”的距离最大的那个超平面(用w,b可以决定超平面)
我们讨论下图的二维情况,该超平面就是一条线。原来就是找到中间那条线,但也不是那么自信,所以就上下各预留了一点空间。该方法又称为最大间隔分类器。间隔指的是上下两个线之间的距离,这个距离是任何一个线到中间的线的2倍,所有可以变成让一半的距离distance最大
”任何一点xi到的距离要大于等于1,并且越大越好“,这里的等于1的情况就是我们设置的边界,该距离可以利用点到直线距离公式表示:
SVM处理的二分类问题,,
如果xi是正样本yi =1,同时,即
如果xi是负样本yi =-1,同时,即
所以将(1)式上面乘yi,就可以将绝对值去掉,等式不变
带入(0)可得:
(3)
上式后半部门的最小值就是
所以(3)可以同等表达为:
s.t.表示的是限制条件,对于优化问题,我们习惯性求最小值,并去掉绝对值:所以将(4)转变为
(5)式子的目标函数是二次函数,限制条件是N个线性不等式条件,所以这是凸二次优化问题,可以用拉格朗日乘子法和KKT条件进行求解。拉格朗日乘子法可以寻找多元函数在一组约束条件下的极值,将d个变量与k个约束的最优化问题转变成d+k个变量的无约束问题。
(6)
公式(6)描述的是这样的问题:找到x*,使得目标值f(x)最小,且满足h(x)=0,根据根据拉格朗日定理将上式转成(7)对h(x)没有约束的式子,从而求解
这里来解释一下为什么(6)和(7)等价?
下图黑色的圈是f(x)在等于不同的常数的时候的等高线,我们要找到满足h(x)=0的条件下的最小值,所以就是该值要在红线上,由此可见应该是两者相切的地方。因为在相交的时候,一定可以在左或者右找到更小的值。在相切处必定是极点位置,因为是凸函数,所以就是极小值。那么切点初的切线就是同一条,因为梯度方向是垂直切线的,所以此时和
是共线的,至于各自的方向还要看具体值得大小分布,因此可得
,这个是根据(6)的描述推导出的结果
接下来我们看看(7),对x和λ求导
是不是很神奇!!!! 对(7)式的操作和(6)式的结果完全一样,并且自带等式特效!所以可以进行等价的求解。
(9)
公式(8)描述的是这样的问题:找到x*,使得目标值f(x)最小,且满足g(x)<=0,根据根据拉格朗日定理或者说KKT条件将上式转成(9)对g(x)没有约束的式子,从而求解。
(1)g(x)有两种情况,第一种就是 g(x)<0的时候,就是图中①的位置,在这个位置,x无论在g(x)中向哪个方向移动一点,都仍然在可行域g(x)中,也就是说可以认为不存在g(x)的限制,那么就可以直接求解所对应的点,那么就是相当于(9)中的 u=0;也就是
(2)第二种就是最小值在g(x)=0上,图中的②的位置,以下就要说明为什么λ大于等于0,请时刻记住,梯度是指向函数值增大的方向。好,那么一定指向可行域的外部,因为外面g(x)>0;对于
在该点是最小值,表明
在除了该点之外的可行域中的点的值都比该点大,所以
指向大的地方,指向可行域内。那么也就是说
和
是反向的!此时,因为在线上,所以也满足
(
)
联想到我们SVM的基本原理,这个不等式就是我们的边界,在边界上的点,它的u>0,除此之外所有的都=0,也就是说最后的f(x)函数的最优化问题,只和最近的点有关,这些点称为支持向量,这就是SVM的核心。
在不等式中使得拉格朗日等价的条件就是KKT条件,根据以上的分析可以KKT条件是:
(10)
当有多个约束条件的时候就是
(10)
以及KKT条件
(11)
比较(10)和(5)
可以发现
所以拉格朗日乘子就是
所以得到和(5)等价的(12)
s.t.
(12)
这里就可能会好奇为什么会出现min 和 max ,下面就是解释
以上两种情况合并就是 在
取得。这是不是就是(12)和(5)的等价
s.t.
(12)
利用对偶原则,求解上式子,因为凸二次规划问题,满足强对偶关系,就是以下式子等价
(13)
对偶问题中先计算,这是一个没有约束的问题,直接对w,b求偏导即可
将(14)带入(12),得到最小的值
(12)式就变成了
s.t. (15)
同样(15)中的求最大变为求最小
总结KKT条件,在整个过程中的限制条件:按照(11)可得
(17)
求出满足KKT条件的u,然后就可以得到w,b,若存在(xk,yk)满足,即在直线上
则最终的分类决策函数