SVM支持向量机及SMO算法总结

之所以写这篇文章,主要是因为SVM和SMO的算法看了很多遍才看懂,现在网络上也有很多相关的资料,这篇文章主要是记录自己的学习过程,集中在后面的证明求解过程。初学者建议先看底下的参考资料,把相关概念弄清楚了之后,如果在看论文过程中有疑惑的,可以过来看没看有没有参考的地方。

首先对于SVM(support vector machine)的理解为:寻找一个超分类平面,把不同分类的数据分隔开,且两边的最小间距最大。

这里写图片描述

函数间距与几何间距:

在Andrew Ng的材料中,涉及到两个间距的概念:函数间距与几何间距。

函数间距的定义:γ^(i)=y(i)(wTx+b) , 当wb 成比例变化,函数间距也成比例变化

几何间距的定义:γ(i)=y(i)(wTx+b)||w|| , 当wb 成比例变化,几何间距不变

最大化间距

SVM目标是最大化最小几何间距,故有:

最小几何间距: γ=mini=1,..,mγ(i)

maxγ,w,b     γ

s.t.        y(i)(wTx+b)γ,i=1,...,m

               ||w||=1

第一个限制条件保证所有例子的函数间距大于我们的最小几何间距γ||w||=1 保证了函数间距和几何间距等价。

由于该式子比较难求解,故我们可以考虑转换一下上式为:

maxγ,w,b    γ^||w||

s.t.        y(i)(wTx+b)γ^,i=1,...,m

考虑到函数间距与wb 成比例变化,故成比例变化wb 不影响该最大式子,故可以考虑令γ^=1

原式可变为:

maxw,b     1||w||

s.t.        y(i)(wTx+b)1,i=1,...,m

最后该式子等价为:

minw,b     12||w||2

s.t.        y(i)(wTx+b)1,i=1,...,m

拉格朗日对偶

上面已经列出了我们需要求解wb 的式子,但是由于涉及到限制条件,很难直接求解。这时候就需要我们的朗格朗日乘子和朗格朗日对偶问题的知识了。

对于一般式子:

minw   f(w)

s.t.   gi(w)0,i=1,...,k

          hi(w)=0,i=1,...,k

L(w,α,β)=f(w)+i=1kαigi(w)+i=1lβihi(w) , 该式子称为拉格朗日函数

在满足原式子的限制条件下有:maxα,β:α0L(w,α,β)=f(w)

又有以下对偶式子:

maxα,β:α0minwL(w,α,β)minwmaxα,β:α0L(w,α,β)=minwf(w)

当满足一定条件下时, 我们有该等式成立。该条件称为KKT:

wiL(w,α,β)=0,i=1,...,n

βiL(w,α,β)=0,i=1,...,l

αigi(w)=0,i=1,...k

gi(w)0,i=1,...k

αi0,i=1,...k

在满足以上KKT条件下,原来求f(w) 在限制条件下的最小值就可以等价转换为求maxα,β:α0minwL(w,α,β)

应用拉格朗日求解最小间隙最大值

构造朗格朗日函数:

L(w,b,α)=12||w||2+i=1mαi(1y(i)(wTx(i)+b))

根据KKT条件有:

wL=0

bL=0

得到以下结果:

w=i=1mαiy(i)x(i)

i=1mαiy(i)=0

以上结果回代入拉格朗日函数得到:

L(w,b,α)=i=1mαi12i,j=1my(i)y(j)αiαj(x(i))Tx(j)

故原式子可等价为:

maxα    W(α)=i=1mαi12i,j=1my(i)y(j)αiαj<(x(i)),x(j)>

s.t.      αi0,i=1,...m

             i=1mαiy(i)=0

<(x(i)),x(j)> 表示两个向量的内积. 实际上,可以用核函数来表示两个向量的相似度,这样,我们的SVM模型就可以应用在一些非线性可分的问题上。

正则化及不可分情形讨论

实际上的问题经常是,我们无法找到一个线性可分的超分类平面,这样,我们之前的限制条件是无法被满足的。那么前面做的这么多工作都只能应用于可分的情况吗?

之前我们的限制条件是非常严格的y(i)(wTx+b)1 , 但是我们可以考虑加入一些松弛变量ζ 来打破这种情况,同时对于这种情况要加一些惩罚条件,故原先的式子可改写成:

minw,b     12||w||2+Ci=1mζi

s.t.        y(i)(wTx+b)1ζi,i=1,...,m

               ζi0,i=1,...,m

还是构造拉格朗日函数:

L(w,b,α)=12||w||2+Ci=1mζi+i=1mαi(1ζiy(i)(wTx(i)+b))+i=1mri(ζi)

w , b , ζ 分别对L 偏导可以得到:

w=i=1mαiy(i)x(i)

b=i=1mαiy(i)=0

Cαiri=0,i=1,..,m

由于ri0 , αi0

故由Cαiri=0,i=1,..,m 可得0αiC,i=1,...,m

w , b 回代回去,原式子可以等价为:

maxα    W(α)=i=1mαi12i,j=1my(i)y(j)αiαj<(x(i)),x(j)>

s.t.       0αiC,i=1,...m

             i=1mαiy(i)=0

且再次检查KKT条件,有:

αi(1ζiy(i)(wTx(i)+b))=0

1ζiy(i)(wTx(i)+b)0

ri(ζi)=0

ζi0

ζi0

αi0

αi 进行讨论(由KKT条件)有:

αi=0y(i)(wTx(i)+b)1

αi=Cy(i)(wTx(i)+b)1

0αiCy(i)(wTx(i)+b)=1

SMO优化

前面已经做了很多工作,现在目标函数已经有了. 接下来就是需要α 使得我们的目标函数取到最大值。参考资料中的SMO论文求目标函数的最小值:

minα  Ψ(α)=minα12i,j=1my(i)y(j)αiαjK(x(i),x(j))i=1mαi

s.t.       0αiC,i=1,...m

             i=1mαiy(i)=0

取出一对α1,α2 我们有α1y(1)+α2y(2)=k=i=3mαiy(i) 故有如下图关系


这里写图片描述

分两种情况讨论:y1,y2 不同号以及y1,y2 同号

其中对应的α2 的边界为:

  1. 同号情况:L=max(0,α2α1),H=min(C,C+α2α1)
  2. 异号: L=max(0,α2+α1C),H=min(C,α2+α1)

化简目标函数,把α1,α2 提取出来:

s=y1y2,Kij=K(xi,xj)

Ψ(α)=12α12K11+12α22K22+sα1α2K12α1α2+y1α1v1+y2α2v2+Ψconst

其中有:

vi=j=3mαjyjKij=ui+by1α1K1iy2α2K2i (α1 表示旧的值)

则有α1+sα2=y1i=3mαiyi=α1+sα2=t

α1=tsα2 代入目标函数有:

Ψ(α)=12(tsα2)2K11+12α22K22+s(tsα2)α2K12(tα2)α2+y1(tsα2)v1+y2α2v2+Ψconst

目标函数对α2 求导并令其为0:

α2Ψ(α)=α2(K11+K222K12)st(K11K12)y2(v1v2)+s1=0

t=α1+sα2,vi=j=3mαjyjKij=ui+by1α1K1iy2α2K2i 代入上式得:

α2(K11+K222K12)=α2(K11+K222K12)+y2(u1u2+y2y1)

目标函数对α2 进行二次求导有:

2α2Ψ(α)=η=K11+K222K12

  1. η>0 有:

    α2new=α2+y2(E1E2)η

    这里写图片描述

    α1new=α1+s(α2α2new,clipped)

  2. η0 有, 此时易知α2 取到边界时,目标函数最小:

    f1=y1(E1+b)α1K11sα2K12,

    f2=y2(E2+b)sα1K12α2K22,

    L1=α1+s(α2L)

    H1=α1+s(α2H)

    ΨL=L1f1+Lf2+12L12K11+12L2K22+sLL1K12

    ΨH=H1f1+Hf2+12H12K11+12H2K22+sHH1K12

    对比ΨL,ΨH , 取值较小的那个

  3. 每次更新完α 后都需要更新b值:

    α1 不在界上时:

    bnew=b1=E1+y1(α1newα1)K11+y2(α2new,clippedα2)K12+b

    α2 不在界上时:

    bnew=b2=E2+y1(α1newα1)K12+y2(α2new,clippedα2)K22+b

    当双方都在界上时:

    b=b1+b22

推荐相关参考资料:

  1. Andrew Ng在网易公开课的课堂资料,其中part V涉及到SVM. http://cimg3.163.com/edu/open/ocw/jiqixuexikecheng.zip

  2. John Platt的SMO论文. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/smo-book.pdf

  3. JerryLead的博客. http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988415.html#undefined

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章