SVM 的原理和目标
几个基本概念
线性可分SVM——线性 SVM——非线性 SVM
1、线性可分SVM,表示可以用一根线非常清晰的划分两个区域;线到支持向量的距离 d 就是最小的。
2、线性 SVM,表示用一根线划分区域后,可能存在误判点,但还是线性的;线到支持向量的距离不一定是最小的,但忽略其他非规则的支持向量。
3、非线性 SVM,表示使用核函数之后,把低维的非线性转换为高维线性
复习下函数和向量
假如有个方程
image
y=x/2-1可以变化为 -x+2y+2=0
f(x,y)=-x+2y+2,其中红色的就是他的法向量
写成向量的形式:
image
改写下
image
前面的系数项可以令其为
image
x,y 的那一项,其实可以演变为 n行,所以可以简化为
image
后面的2是常数项,用 b 代替
这样处理完,我们的式子可以修改为
image
其中 w 就是我们的法线方向,x 是我们的参数,b 是截距项。
此时如果有个
image
带入式子得到是正值,那么就在法线的同方向;否则在法线的逆方向。如果等于0,那么该点就在线上。
f(x1,x2)代表一个线,f(x1,x2,x3)代表一个面,如果是 n 维的,那么给他一个牛逼的名称“超平面”,由于这个名字太牛逼,所以低维的也叫超平面。
计算过程和算法步骤
接入给定一个特征空间上的训练数据集,
image
其中
image
image
这里为什么 y 取值+1和-1?
因为这样取值方便后面的推导,如果非要把+1和-1换为+3和-8什么的,其实没有什么不同。后面推导不受影响。
写成+1和-1的话,那么我们的
image
,那么
image
,两边同时乘以 yj,得到
image
,这样我们就可以很方便的得到两个标记相乘等于两个标记相除。如果选择不同的值,就得不到上面的式子。
推导目标函数
分割平面:
image
训练集:x1,x2,x3......
目标集:y1,y2,y3...... y属于1和-1的集合
新数据的分类:sign(y(x))
根据题设
image
其中
image
就是一个映射,
image
就是原封不动一阶映射,二阶映射的例子如下:
{1,x1,x2,x3}==>{1,x1,x2,x3,x12,x22,x3^2,x1x2,x2x3,x1x3}把原来的四维转换成10维。
接下来就有
image
其中:y(x)为预测值,y 为真实值,他们互为推导。最终他们的乘积大于0.
从而可以得到下面的公式(其实是点到直线的距离)
image
我们的目标函数:
image
解释:对于所有的样本到平面的距离求最近,也就是最小值,然后得到的这些平面里面根据 w 和 b再求 最大值。
如何优化
转换等价问题,直接来解决的确棘手。先来看
线性可分的这个图
image
可以看出,有3个支持向量。
上虚线五角星的那个点到红线的距离是一个值,而且是最近的一个距离,假如该距离为 d=3,那么也就是
image
两边同时除以3
image
也就是范数 w 乘以3,但是对整个方程来说位置是不发生变化的。(其实 w 是我们要求的,可以随便设置,总能得到右边为1)
打个比方,假如有个方程 f(x,y)=ax+by+c=0,有个点到该线的距离为d,那么我们可以除以 d,使得到改线的距离为1,可以认为是距离归一处理。那么同理我们总能得到一个 w,使得五角星那个点到红线的距离为1,就得有个约束条件就是
image
,好了,现在这个值要求取最小值,而且又是大于等于1,那么就直接取1就是最小值。
那么新的目标函数就变化为
image
一个数的倒数求最大,也就是这个数求最小,也就是求这个数的平方最小,也就是求这个数平方的一半最小,好了,公式继续演变为:
image
这个就是我们需要求解的目标,假如 n=10000(n 是样本个数),也就是有1万个下面的约束条件下求上式子的最小值,对于这个目标函数如何来求呢?带有约束条件的求极值问题,就想到拉格朗日乘子法。
拉格朗日乘子法和KKT条件
其实拉格朗日乘子法的约束条件是要求等于某个条件,而这里是不等于,也可以这么做。
image
这个式子的暂且放一边,我们来梳理下拉格朗日乘子法。
假设有个函数要求最小值,min f(x),其中有两部分要求,第一部分是不等式部分:
image
image
image
这里所有条件的方向可以修改为
image
,因为可以增加负号来改变方向,不是什么大问题。
最终也就是
image
第二部分是等式部分,记为
image
本科阶段的拉格朗日乘子法只有等式部分,现在这里增加了不等式部分,针对不等式部分,做如下操作。
先设置一系列的
image
,构造一个新的函数
image
这个就是拉格朗日函数。对于这个函数来说,以
image
w为变量,对其求导数,可得系数为
image
,在二维坐标上就是一条线,同理
image
image
等。
将他们画在一张坐标系里面,
image
对于这3个线段求取每个 x 点的最小值,得到的是红色的这个区域的线,同理,n 条这样的线也可以得到这样一个凹函数,凹函数必有最大值,并且是全局最大。
那么
image
到底是什么?
继续看下
image
image
因为
image
而
image
,所以
image
因为
image
,所以无论 lambda 取什么值,
image
,这就是说 G(x)是一个 f(x)加上一个负数,那么也就是说 G(x)的最大也就是 f(x)了。
image
,那么要求 minf(x)也就是求
image
可以找到他的对偶函数
image
再回到我们原来的式子,
image
这个式子比上面的理论要简单点,没有等式约束。那么他的原始极小极大问题
image
他的对偶问题为极大极小问题
image
为了求最小值,我们需要对w 和 b 分别求导,并且使之为0,
其中
image
最终得到
image
也就是
image
接下来,对 b 求偏导数,得到
image
w 不就是法向量嘛,其中包含的 alpha=0的点不是支撑向量,而 alpha 不为0 的才是 SV。pha(x)就是核函数,所有的这些在这里可以体现出来了。
归纳下:
image
继续推导。。。带入 w 和 b,剩下 alpha 的式子。
image
最后得到求 alpha 的式子
image
使用某种方法(SMO)求得 alpha,带入 w 和 b 就可以求得 w。
SMO 算法,由条件可知,
[图片上传失败...(image-ab4eb3-1526290967990)]
我们需要调节2个 alpha 参数,一大一小,使得为0,满足条件后求得 alpha 较大值,然后慢慢调节,再得到一个较大值,这样的按照序列求得最大的优化方法叫 SMO
掉个方向,得到
image
举个例子看的明白些:
给定3个数据点,正例点x1=(3,3)T,x2=(4,3)T,反例点 x3=(1,1)T, 求解线性可分的SVM。
image
解:目标函数是
image
[图片上传失败...(image-fbc4d6-1526290967990)]
根据
image
可得
image
其中正例就是 x1=(3,3,1) x2=(4,3,1);负例x3=(1,1,-1)
最后是表示 y 的值。x1对应的系数 alpha1,x2对应的系数是 alpha2,x3对应的系数是 alpha3.
将 alpha3=alpha1+alpha2带入式子计算得到关羽 alpha1和 alpha2 的han 函数
image
对 alpha1和 alpha2求偏导令他为0,得到在(1.5,-1)这个点取到极值,但是改点不满足 alpha2>0这个条件,所以最小值在边界上没有达到。
令 alpha1=0,最小值 s(0,2/13)=-2/13=-0.1538
令 alpha2=0,最小值 s(1/4,0)=-1/4=-0.25
所以得到s(alpha1,alpha2)在1/4,0处达到最小,此时 alpha3=alpha1+alpha2=0.25
所以 alpha1=alpha3=0.25对应点 x1和 x3构成支持向量。
带入公式:
image
这里 fai(xi)就是 xi
得到 w1=w2=0.5 b=-2
所以超平面为
image
图形
image
x1的系数和x3的系数是0.25,而x2的系数是0,也就是说 x2没有参与支持向量的构建,不是支持向量。
以上是线性可分,那么线性不一定可分的咋办呢?
如图
image
按照可分那就是实线,貌似虚线应该更好。
若线性不可分,需要加入松弛因子[图片上传失败...(image-8be0f1-1526290967990)]>=0,
此时约束条件变成:
image
当
image
=0就是线性可分。
目标函数:
image
这个式子中,当 C 趋向无穷大的时候,
image
只能取0才能保证能取最小值。C 可以认为是允许犯错误的容忍程度,C 太大,表示对错误完全不能容忍,必须要线性可分。从另外角度来说,C 太大,那么不允许犯错误,那么过渡带就会窄。C 小些的话,过渡带会宽些,也就是泛化能力较强。
归纳下:
image
对应的拉格朗日函数(注意符号,ξ>=0的变化)
image
然后对其求偏导数
image
将三个式子带入
image
把 μ消掉了
对上式子求关羽 α 的极大,得到
image
上式右下角的条件限制了α的取值范围是缩小了的。
进一步整理得到对偶问题
image
再进一步构造最优化问题
image
求解得 a^*
然后计算出w 和 b
image
注意:计算 b 的时候需要满足α在(0,C)之间
最终求得超平面:
image
损失函数分析
image
圆圈的点:他们的α=C,他们是有损失的,并且哪些红色线段表示损失值;虽然他们分的是对的。但是已经进入敏感地带。
方块的星:他们的0 < α < C,是支持向量
其他点:α = 0
损失值=1-d;d 是点到超平面的距离,那么过渡带之外的损失值为0,于是得到 SVM 损失函数图(Hindge损失)
image
也就是
image
但得到这个最小的时候,求得新的 w 和 b。
我们再看下
[图片上传失败...(image-faff7c-1526290967990)]
这里出现了损失函数,经过变换得到新的损失函数
image
后面一项是 L2正则
作者:breezedancer
链接:https://www.jianshu.com/p/7d5693d9e2fe