版权声明:转载请注明出处! PS:欢迎大家提出疑问或指正文章的错误! https://blog.csdn.net/zhuqiang9607/article/details/83865013
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