1.SMO概念
上一篇博客已經詳細介紹了SVM原理(http://blog.csdn.net/luoshixian099/article/details/51073885),
爲了方便求解,把原始最優化問題轉化成了其對偶問題,因爲對偶問題是一個凸二次規劃問題,這樣的凸二次規劃問題具有全局最優解,如下:
α
minΨ(α
)=α
min21i=1∑Nj=1∑Nyi⋅yj⋅K(xi
,xj
)⋅αi⋅αj−i=1∑Nαi
0≤αi≤C,∀i,
i=0∑Nyi⋅αi=0
其中
K(xi
,xj
)表示向量內積
其中:
(
xi,
yi):訓練樣本數據,
xi:樣本特徵
yi∈{−1,1}:爲樣本標籤
C:懲罰係數
上述問題是要求解N個參數
(α1,α2,α3,...,αN)
,其他參數均爲已知,有多種算法可以對上述問題求解,但是算法複雜度均很大。
但1998年,由Platt提出的序列最小最優化算法(SMO)可以高效的求解上述SVM問題,它把原始求解N個參數二次規劃問題分解成很多個子二次規劃問題分別求解,每個子問題只需要求解2個參數,方法類似於座標上升,節省時間成本和降低了內存需求。每次啓發式選擇兩個變量進行優化,不斷循環,直到達到函數最優值。
2.SMO原理分析
2.1視爲一個二元函數
爲了求解N個參數
(α1,α2,α3,...,αN),首先想到的是座標上升的思路,例如求解α1,可以固定其他N-1個參數,可以看成關於
α1的一元函數求解,但是注意到上述問題的等式約束條件
∑i=1Nyiαi=0,當固定其他參數時,參數
α1也被固定,因此此種方法不可用。
SMO算法選擇同時優化兩個參數,
固定其他N-2個參數,假設選擇的變量爲
α1,α2的二元函數,
Constant表示常數項,(不包含變量
α1,
α2的項)。
minΨ(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1v1α1+y2v2α2+Constant(1)
其中
vi=∑j=3NαjyjK(xi,xj),i=1,2
2.2視爲一元函數
3.由等式約束得:
α1y1+α2y2=−i=3∑Nαiyi=ζ
可見
ζ爲定值。
等式
α1y1+α2y2=ζ兩邊同時乘以
y1,且
y12=1,得
α1=(ζ−y2α2)y1(2)
(2)式帶回到(1)中得到只關於參數
α2的一元函數,由於常數項不影響目標函數的解,以下省略掉常數項
Constant
min Ψ(α2)=21K11(ζ−α2y2)2+21K22α22+y2K12(ζ−α2y2)α2−(ζ−α2y2)y1−α2+v1(ζ−α2y2)+y2v2α2(3)
2.3對一元函數求極值點
上式中是關於變量α2的函數,對上式求導並令其爲0得:
∂α2∂Ψ(α2)=(K11+K22−2K12)α2−K11ζy2+K12ζy2+y1y2−1−v1y2+v2y2=0
1.由上式中假設求得了
α2的解,帶回到(2)式中可求得
α1的解,分別記爲:
α1new,α2new
優化前的解記爲:
α1old,α2old,
由於參數
α3,α4,...,αN固定,由等式約束
∑i=1Nyiαi=0有:
α1oldy1+α2oldy2=−i=3∑Nαiyi=α1newy1+α2newy2=ζ
ζ=α1oldy1+α2oldy2(4)
2.假設SVM超平面的模型爲
f(x)=wTx+b,
3.上一篇中已推導出
w的表達式,將其帶入得
f(x)=i=1∑NαiyiK(xi,x)+b
f(xi):表示樣本
xi的預測值
yi表示樣本
xi的真實值,定義
Ei表示預測值與真實值之差爲
Ei=f(xi)−yi(5)
3.由於
vi=∑j=3NαjyjK(xi,xj),i=1,2因此,
v1=f(x1)−j=1∑2yjαjK1j−b(6)
v2=f(x2)−j=1∑2yjαjK2j−b(7)
把(4)(6)(7)帶入下式中:
(K11+K22−2K12)α2−K11ζy2+K12ζy2+y1y2−1−v1y2+v2y2=0
化簡得: 此時求解出的
α2new未考慮約束問題,先記爲
α2new,unclipped:
(K11+K22−2K12)α2new,unclipped=(K11+K22−2K12)α2old+y2[y2−y1+f(x1)−f(x2)]
代入(5)式,並記
η=K11+K22−2K12:
α2new,unclipped=α2old+ηy2(E1−E2)(8)
2.4對原始解修剪
上述求出的解未考慮到約束條件:
0≤αi=1,2≤C
α1⋅y1+α2⋅y2=ζ
在二維平面上直觀表達上述兩個約束條件 :

最優解必須要在方框內且在直線上取得,因此
L≤α2new≤H
當
y1̸=y2時,
L=max(0,α2old−α1old);
H=min(C,C+α2old−α1old)
當
y1=y2時,
L=max(0,α1old+α2old−C);
H=min(C,α2old+α1old)
經過上述約束的修剪,最優解就可以記爲
α2new了.
α2new=⎩⎪⎪⎪⎪⎪+α2old−C);
H=min(C,α2old+α1old)
經過上述約束的修剪,最優解就可以記爲
α2new了.
α2new=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪