線性可分支持向量機學習算法
輸入:線性可分訓練集T={(x1,y1),(x2,y2),...,(xN,yN)} 其中xi∈Rn,yi∈{−1,+1},i=1,2,..,N
輸出:分離超平面和分類決策函數
(1)構造並求解約束最優化問題
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
αi≥0,i=1,2,..,N
求得最優解
α∗=(α∗1,α∗2,...,α∗N)T
w∗=∑i=1Nα∗iyixi
b∗=yj−∑i=1Nα∗iyi(xi⋅xj)
求得分離超平面
w∗⋅x+b∗=0
分類決策函數
f(x)=sign(w∗+b∗)
線性支持向量機與軟間隔最大化
線性可分問題的支持向量機學習方法,對線性不可分訓練數據是不適用的,將它擴展到線性不可分的數據,使其成爲軟間隔最大化爲了解決這個問題,可以對每個樣本點(xi,yi) 引進一個鬆弛變量ξi≥0 ,使得函數間隔加上鬆弛變量大於等於1,這樣,約束條件變爲
yi(w⋅xi+b)≥1−ξi
同時,對每個鬆弛變量
ξi ,支付一個代價,目標函數由原來的
12||w||2+C∑i=1Nξi
這裏,
C>0 稱爲懲罰參數,一般由應用問題決定,
C 值大是對誤分類的懲罰增大,
C 值小時,對錯誤分類的懲罰減小。最小化目標函數包含兩層含義:使
12||w||2 儘量小,即間隔儘量大,同時使錯誤分類的點儘量少,
C 是調和兩者的係數。則原始問題變爲
minw,β,ξ12||w||2+C∑i=1Nξi
s.t.yi(w⋅xi+b)≥1−ξi,i=1,2,..,N
ξi≥0,i=1,2,..,N
顯然,線性支持向量機包含線性可分支持向量機,具有更廣的適用性。
學習的對偶算法
原始問題的對偶問題是
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
0≤αi≤C,i=1,2,..,N
非線性支持向量機與核函數
核技巧
非線性問題往往不好求解,所以希望能夠通過解線性分類問題的方法解決這個問題,所採取的方法是進行一個非線性變化,將非線性問題變化爲線性問題。核技巧應用到支持向量機,其基本想法是通過一個非線性變換將輸入空間對應於一個特徵空間,使得在輸入空間Rn 中的超曲面模型對應於特徵空間H 中的超平面(支持向量機),這樣,分類問題的學習任務通過在特徵空間中求解支持向量機就可以完成。
核函數的定義
設 是輸入空間,設 爲特徵空間(希爾伯特空間),如果存在一個從 到 的映射ϕ(x):→ 使得對所有的x,z∈ ,函數K(x,z) 滿足條件
K(x,z)=ϕ(x)ϕ(z)
則稱
K(x,z) 爲核函數,
ϕ(x) 爲映射函數,式中
ϕ(x)⋅ϕ(z) 爲內積
核技巧的想法是,在學習與預測中只定義核函數
K(x,z) ,而不顯示地定義映射函數
ϕ 。
我們注意到在線性支持向量機的對偶問題中,無論是目標函數還是決策函數,都只涉及輸入實例與實例之間的內積,在對偶問題的目標函數中的內積
xi⋅xj 可以用核函數
K(xi,xj)=ϕ(xi)ϕ(xj) 來代替,此時對偶問題的目標函數爲
W(α)=12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi
同樣,分類決策函數中的內積也可以用核函數代替,而分類決策函數式稱爲
f(x)=sign(∑i=1Nsα∗iyiϕ(xi)ϕ(x)+b∗)=sign(∑i=1Nsα∗iyiK(xi,x)+b∗)
這等價於經過映射
ϕ 將原來輸入空間變換到一個新的特徵空間,將輸入空間中的內積
xi⋅xj 變換爲特種空間中的內積
ϕ(xi)⋅ϕ(xj) ,在新的特徵空間裏從訓練樣本中學習線性支持向量機,當映射函數是非線性函數時,學習到的含有核函數的支持向量機就是非線性分類模型。
也就是說,在覈函數
K(x,z) 給定的條件下,可以利用解線性分類問題的方法求解非線性分類問題的支持向量機。學習是隱式的在特徵空間進行的,不需要顯式地定義特徵空間和映射函數。這樣的技巧稱爲核技巧。
正定核
設⊂n,K(x,z) 是定義在× 上的對稱函數,如果K(x,z) 對應的Gram矩陣
K=[K(xi,xj)]m×n
是半正定矩陣,則稱
K(x,z) 是正定核
常用的核函數
1多項式核函數
K(x,z)=(x⋅z+1)p
對應的支持向量機是一個
p 次多項式分類器。在此情形下,分類決策函數成爲
f(x)=sign(∑i=1Nsα∗iyi(xi⋅x+1)p+b∗)
2.高斯核函數
K(x,z)=exp(−||x−z||22σ2)
對應的支持向量機是高斯徑向基函數分類器,在此情形下,分類決策函數成爲
f(x)=sign(∑i=1Nsα∗iyiexp(−||x−z||22σ2)+b∗)
3.字符串核函數
兩個字符串s 和t 上的字符串核函數是基於映射ϕn 的特徵空間中的內積:
kn(s,t)=∑u∈∑n[ϕn(s)][ϕn(t)]u
字符串核函數
kn(s,t) 給出了字符串
s 和
t 中長度等於
n 的所有字串組成的特徵向量的餘弦相似度
http://users.cecs.anu.edu.au/~chteo/SASK.html給出了計算字符串核函數比較好的方法。通常字符串核函數是用動態規劃來計算,該方法可以降低計算複雜度。
序列最小最優化算法
SMO算法要解如下凸二次規劃的對偶問題:
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi
s.t.∑i=1Nαiyi=0
0≤αi≤C,i=1,2,,..,N
SMO算法是一種啓發式算法,其基本思路是:如果所有算法都滿足此最優化問題的KKT條件,那麼這個最優化問題的解就得到了,因爲KKT條件是該最優化問題的充分必要條件。否則,選擇兩個變量,固定其他變量,針對這兩個變量構建一個二次規劃問題,這個二次規劃問題關於這兩個變量的解應該更接近原始二次規劃問題的解。子問題可以大大提高算法速度。
注意,子問題的兩個變量中只有一個是自由變量,假設
α1,α2 爲兩個變量,
α3,α4,...αN 固定,那麼由於要滿足
∑i=1Nαiyi=0
所以
α1=−y1∑i=2Nαiyi
整個SMO算法包括兩個部分:求解兩個變量二次規劃的解析方法和選擇變量的啓發方法。於是,SMO的最優化問題的子問題可以寫成:
minα1,α2W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2−(α1+α2)++y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2
s.t.αiyi+α2y2=−∑i=3Nyiαi=ζ
0≤αi≤C,i=1,2
假設問題的初始可行解爲
αold1,αold2 最優解爲
αnew1,αnew2 ,並假設在沿着約束方向未經剪輯時
α2 的最優解是
αnew,unc2
由於
αnew2 需滿足不等式約束
0≤αi≤C ,所以最優值的取值範圍必須滿足條件
L≤αnew2≤H ,其中
L和H 是
αnew2 所在對角線段端點的界。
如果
y1≠y2 則
L=max(0,αold2−αold1),H=min(C,C+αold2−αold1)
如果
y1=y2 則
L=max(0,αold2+αold1−C),H=min(C,αold2+αold1)
下面,首先求沿着約束方向未經剪輯即未考慮不等式約束時
α2 的最優解
αnew,unc2 ,然後再求剪輯後
α2 的解
αnew2 ,我們用定理來敘述這個結果,首先記
g(x)=∑i=1NαiyiK(xi,x)+b
令
Ei=g(xi)−yi 最優化問題沿着約束方向未經剪輯時的解是
αnew,unc2=αold2+y2(E1−E2)η
其中
η=K11+K22−2K12=||ϕ(x1)−ϕ(x2)||2
αnew1=αold1+y1y2(αold2−αnew2)
變量選擇問題
第一個變量的選擇:SMO稱選擇第一個變量的過程爲外層循環。外層循環在訓練樣本中選取違反KKT條件最嚴重的樣本點,並將其對應的變量作爲第一個變量。SMO稱選擇第二個變量的過程爲內層循環。假設在外層循環中已經找到第一個變量α1 ,現在要在內層循環中找第2個變量α2 ,第2個變量的選擇標準是希望能使α2 有足夠大的變化。