SMO算法主要是为优化SVM(支持向量机)的求解而产生的,SVM的公式基本上都可以推到如下这步:
maxα∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxj
s.t.∑imαiyi=0
0≤αi≤C,i=1,2,3,...,m
其中,C是SVM中惩罚参数(或正则化常数),可令:
φ(α)=∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxj
SMO的具体步骤:
第一步:为了满足∑imαiyi=0公式,首先要固定两个变量αi和αj,这里以α1和α2为例,其余的αi(i=3,4,...,m)都是已知量,则约束条件变成:
α1y1+α2y2=c=−∑i=3mαiyi,(0≤α1≤C,0≤α2≤C)
两边同乘y1,并记y1y2=h0得:
α1+h0α2=−y1∑i=3mαiyi=α1new+h0α2new
令H=−y1∑i=3mαiyi,可得:
α1new=H−h0α2new (1)
第二步:由于α1new可以用α2new来表示,且αi(i=3,4,...,m)都是已知量,此时φ(α)只有一个未知变量α2new,那么可以直接求导得到α2new。具体实施过程如下:
1、展开φ(α)可得:
φ(α)=α1new+α2new−21α1new2k11−21α2new2k22−α1newα2newy1y2k12−α1newy1∑i=3mαiyiki1−α2newy2∑i=3mαiyiki2+φconstant (2)
式中, kij=k(xi,xj),表示核函数
φconstant=∑i=3mαi−21∑i=3m∑j=3mαiαjyiyjkij
2、SVM的超平面模型:f(xj)=wT+b=∑i=1mαiyikij+b
令Vj=∑i=3mαiyikij=f(xj)−b−α1y1k1j−α2y2k2j (3)
3、 将公式(1)、(3)代入(2)得:
φ(α)=H−h0α2new+α2new−21(H−h0α2new)2k11−21α2new2k22−(H−h0α2new)α2newy1y2k12−(H−h0α2new)y1V1−α2newy2V2+φconstant
对α2new求导数可得:
dα2newdφ(α)=−(k11+k22−2k12)α2new+h0H(k11−k22)+y2(V1−V2)−h0+1=0
求解可得:
(k11+k22−2k12)α2new=h0H(k11−k22)+y2(V1−V2)−h0+1 (4)
此时,将H、Vj代入公式(4)可得:
(k11+k22−2k12)α2new=(k11+k22−2k12)α2+y2(f(x1)−y1−f(x2)+y2)) (5)
令η=k11+k22−2k12,Ei=f(xi)−yi并代入公式(5)得:
α2new=α2+ηy2(E1−E2)
4、由于0≤α1≤C,0≤α2≤C,且α1y1+α2y2=c,所以\alpha_{2_{new}}必落在如下区域内
结合图形可以得到α2的范围:
{L=max{0,α1+α2−C},H=min{C,α1+α2},ify1=y2L=max{0,α2−α1},H=min{C,C+α2−α1},ify1̸=y2
此时α2new取值为:
α2new=⎩⎨⎧H,ifα2new≥Hα2new,ifL<α2new<HL,ifα2new≤L
第三步:重复第一、第二步直到αinew收敛
1、由αinew,根据公式w=∑i=1mαiyixi求出w
2、只有支持向量满足1−yi(wTxi+b)=0,所以大于0的αinew必然都是支持向量,否则αinew>0,1−yi(wTxi+b)<0,则αinew(1−yi(wTxi+b))<0与条件αinew(1−yi(wTxi+b))=0(KKT条件)相违背
3、现实中采用了一种鲁棒的方法求解b,方式为:
b=∣S∣1∑s∈S(ys1−wxs)
4、最终超平面为:
wx+b=0
根据分类决策函数f(x)=sign(wx+b)得:
sign(x)=⎩⎨⎧−1,ifx<00,ifx=01,ifx>0