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