版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/85929529
在前面已经讲了线性可分支持向量机,是基于训练集是线性可分的假设下,但是现实生活中往往数据集不是可分的,会存在着噪音或异常值,看下面的图。
补充:个人习惯,接下来会将凸二次规划模型称为支持向量机模型,因为支持向量机是通过求解凸二次规划模型最终得到分离超平面。另外分离超平面
wx+b=0也可以写成
(w,b),因为是由这两个参数决定的。
左边的图是线性可分的,实线为求得的分离超平面。但是由于出现了左上方的一个负例O,即
y=−1导致原来的超平面不能正确可分,如果要完全正确分类那么就得使用右边图的那条实线,但是这条线太极端了,最大间隔还是那么小,这样对未来数据的预测恐怕没那么友好了,其实这种情况我们应该忽略掉那个多余的噪音,分离超平面仍然使用左边的那个。
先给出线性可分支持向量机模型
w,bmin21∣∣w∣∣2
s.t.yi(w⋅xi+b)≥1,i=1,2,…N
对于上面的问题也就是某些样本点不能满足原先的线性可分支持向量机模型的约束条件,为了解决这个问题,约束条件中引入松弛变量
ξi≥0,也就是说不需要所有点的函数间隔都大于1,比如可以大于等于0.5,甚至是大于等于-0.5这种,此时目标函数则需要加入惩罚项(正则化项),得到的线性支持向量机模型(凸二次规划模型)如下:
w,bmin21∣∣w∣∣2+Ci=1∑Nξi
s.t.yi(w⋅xi+b)≥1−ξi,i=1,2,…N
ξi≥0,i=1,2,...,N
其中
C称为惩罚参数,由具体问题决定,C大则对误分类的惩罚力度大,C小则对误分类的惩罚力度小,最小化目标函数两层含义:使
21∣∣w∣∣2尽量小,即间隔尽量大(参考最最初的模型),使
Ci=1∑Nξi尽量小,使得误分类个数也比较少。
通过求解以上凸二次规划问题得到分离超平面
wx+b=0 称为线性支持向量机。
关于如何求解,和线性可分支持向量机中的凸二次规划模型一样去求解。即,写出拉格朗日函数,对
w,b,ξi求偏导,转换为对偶问题,使用SMO算法求出对偶问题的解
α=(α1,α2,...,αN)T,从而得到分离超平面
(w∗,b∗)。
写出拉格朗日函数,对
w,b,ξi求偏导
L(w,b,ξ,α,β)=21∣∣w∣∣2+Ci=1∑Nξi−i=1∑Nαi(yi(w⋅xi+b)−1+ξi)−i=1∑Nβiξi
原问题是拉格朗日函数的极小极大化:
w,b,ξminα,βmaxL(w,b,ξ,α,β) ,转换为对偶问题则是极大极小化:
α,βmaxw,b,ξminL(w,b,ξ,α,β)
求解拉格朗日的极小值,求导,令导数为0即可
∂w∂L(w,b,ξ,α,β)=w−i=1∑Nαiyixi=0
=>w=i=1∑Nαiyixi
∂b∂L(w,b,ξ,α,β)=i=1∑Nαiyi=0
∂ξi∂L(w,b,ξ,α,β)=C−αi−βi=0
带入到拉格朗日函数中得到
L(w,b,ξ,α,β)=−21i=1∑Nj=1∑Nαiαjyiyj<xi,xj>+i=1∑Nαi+Ci=1∑Nξi−i=1∑Nαiξi−i=1∑Nβiξi=−21i=1∑Nj=1∑Nαiαjyiyj<xi,xj>+i=1∑Nαi
那么对偶问题就变成了
α,βmax−21i=1∑Nj=1∑Nαiαjyiyj<xi,xj>+i=1∑Nαi
s.t.i=1∑Nαiyi=0(1)
C−αi−βi=0(2)
αi≥0(3)
βi≥0,i=1,2,...,N(4)
约束条件有点繁琐,简化一下,根据(2)和(4)消掉
βi得到
C−αi≥0,再与(3)式写在一起最终得到得到
0≤αi≤C,最后得到的对偶模型如下:
α,βmax−21i=1∑Nj=1∑Nαiαjyiyj<xi,xj>+i=1∑Nαi
s.t.i=1∑Nαiyi=0(5)
0≤αi≤C
所以最后我们要求的就是这么一个对偶模型,至于怎么求,使用SMO算法,只看书有点伤脑子,后面讲到非线性支持向量机会写到,现在就假设我们已经求得了参数
α∗=(α1∗,α2∗,...,αN∗)T,那么就可以求得参数
w∗,b∗了,具体的,需要使用KKT条件。参考 线性可分支持向量机。一下只给出结果
w∗=i=1∑Nαi∗yixi
若存在一个
0≤αj∗≤C,那么得到
b∗如下:
b∗=yj−i=1∑Nαi∗yi<xi,xj>
从而就得到了分离超平面:
w∗x+b∗=0