在支持向量機原理(一) 線性支持向量機中,我們對線性可分SVM的模型和損失函數優化做了總結。最後我們提到了有時候不能線性可分的原因是線性數據集裏面多了少量的異常點,由於這些異常點導致了數據集不能線性可分,本篇就對線性支持向量機如何處理這些異常點的原理方法做一個總結。
1. 線性分類SVM面臨的問題
有時候本來數據的確是可分的,也就是說可以用 線性分類SVM的學習方法來求解,但是卻因爲混入了異常點,導致不能線性可分,比如下圖,本來數據是可以按下面的實線來做超平面分離的,可以由於一個橙色和一個藍色的異常點導致我們沒法按照上一篇線性支持向量機中的方法來分類。
另外一種情況沒有這麼糟糕到不可分,但是會嚴重影響我們模型的泛化預測效果,比如下圖,本來如果我們不考慮異常點,SVM的超平面應該是下圖中的紅色線所示,但是由於有一個藍色的異常點,導致我們學習到的超平面是下圖中的粗虛線所示,這樣會嚴重影響我們的分類模型預測效果。
如何解決這些問題呢?SVM引入了軟間隔最大化的方法來解決。
2. 線性分類SVM的軟間隔最大化
所謂的軟間隔,是相對於硬間隔說的,我們可以認爲上一篇線性分類SVM的學習方法屬於硬間隔最大化。
回顧下硬間隔最大化的條件:
min12 ||w|| 2 2 s.ty i (w T x i +b)≥1(i=1,2,...m)
接着我們再看如何可以軟間隔最大化呢?
SVM對訓練集裏面的每個樣本(x i ,y i ) 引入了一個鬆弛變量ξ i ≥0 ,使函數間隔加上鬆弛變量大於等於1,也就是說:
y i (w∙x i +b)≥1−ξ i
對比硬間隔最大化,可以看到我們對樣本到超平面的函數距離的要求放鬆了,之前是一定要大於等於1,現在只需要加上一個大於等於0的鬆弛變量能大於等於1就可以了。當然,鬆弛變量不能白加,這是有成本的,每一個鬆弛變量ξ i ,
對應了一個代價ξ i ,這個就得到了我們的軟間隔最大化的SVM學習條件如下:
min12 ||w|| 2 2 +C∑ i=1 m ξ i
s.t.y i (w T x i +b)≥1−ξ i (i=1,2,...m)
ξ i ≥0(i=1,2,...m)
這裏,C>0 爲懲罰參數,可以理解爲我們一般迴歸和分類問題正則化時候的參數。C 越大,對誤分類的懲罰越大,C 越小,對誤分類的懲罰越小。
也就是說,我們希望12 ||w|| 2 2 儘量小,誤分類的點儘可能的少。C是協調兩者關係的正則化懲罰係數。在實際應用中,需要調參來選擇。
這個目標函數的優化和上一篇的線性可分SVM的優化方式類似,我們下面就來看看怎麼對線性分類SVM的軟間隔最大化來進行學習優化。
3. 線性分類SVM的軟間隔最大化目標函數的優化
和線性可分SVM的優化方式類似,我們首先將軟間隔最大化的約束問題用拉格朗日函數轉化爲無約束問題如下:
L(w,b,ξ,α,μ)=12 ||w|| 2 2 +C∑ i=1 m ξ i −∑ i=1 m α i [y i (w T x i +b)−1+ξ i ]−∑ i=1 m μ i ξ i
其中 μ i ≥0,α i ≥0 ,均爲拉格朗日系數。
也就是說,我們現在要優化的目標函數是:
min w,b,ξ max α i ≥0,μ i ≥0, L(w,b,α,ξ,μ)
這個優化目標也滿足KKT條件,也就是說,我們可以通過拉格朗日對偶將我們的優化問題轉化爲等價的對偶問題來求解如下:
max α i ≥0,μ i ≥0, min w,b,ξ L(w,b,α,ξ,μ)
我們可以先求優化函數對於w,b,ξ 的極小值,
接着再求拉格朗日乘子α 和
μ 的極大值。
首先我們來求優化函數對於w,b,ξ 的極小值,這個可以通過求偏導數求得:
∂L∂w =0⇒w=∑ i=1 m α i y i x i
∂L∂b =0⇒∑ i=1 m α i y i =0
∂L∂ξ =0⇒C−α i −μ i =0
好了,我們可以利用上面的三個式子去消除w 和b 了。
L(w,b,ξ,α,μ) =12 ||w|| 2 2 +C∑ i=1 m ξ i −∑ i=1 m α i [y i (w T x i +b)−1+ξ i ]−∑ i=1 m μ i ξ i =12 ||w|| 2 2 −∑ i=1 m α i [y i (w T x i +b)−1+ξ i ]+∑ i=1 m α i ξ i =12 ||w|| 2 2 −∑ i=1 m α i [y i (w T x i +b)−1]=12 w T w−∑ i=1 m α i y i w T x i −∑ i=1 m α i y i b+∑ i=1 m α i =12 w T ∑ i=1 m α i y i x i −∑ i=1 m α i y i w T x i −∑ i=1 m α i y i b+∑ i=1 m α i =12 w T ∑ i=1 m α i y i x i −w T ∑ i=1 m α i y i x i −∑ i=1 m α i y i b+∑ i=1 m α i =−12 w T ∑ i=1 m α i y i x i −∑ i=1 m α i y i b+∑ i=1 m α i =−12 w T ∑ i=1 m α i y i x i −b∑ i=1 m α i y i +∑ i=1 m α i =−12 (∑ i=1 m α i y i x i ) T (∑ i=1 m α i y i x i )−b∑ i=1 m α i y i +∑ i=1 m α i =−12 ∑ i=1 m α i y i x T i ∑ i=1 m α i y i x i −b∑ i=1 m α i y i +∑ i=1 m α i =−12 ∑ i=1 m α i y i x T i ∑ i=1 m α i y i x i +∑ i=1 m α i =−12 ∑ i=1,j=1 m α i y i x T i α j y j x j +∑ i=1 m α i =∑ i=1 m α i −12 ∑ i=1,j=1 m α i α j y i y j x T i x j (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)
其中,(1)式到(2)式用到了C−α i −μ i =0 ,
(2)式到(3)式合併了同類項,(3)式到(4)式用到了範數的定義||w|| 2 2 =w T w ,
(4)式到(5)式用到了上面的w=∑ i=1 m α i y i x i ,
(5)式到(6)式把和樣本無關的w T 提前,(6)式到(7)式合併了同類項,(7)式到(8)式把和樣本無關的b 提前,(8)式到(9)式繼續用到w=∑ i=1 m α i y i x i ,(9)式到(10)式用到了向量的轉置。由於常量的轉置是其本身,所有隻有向量x i 被轉置,(10)式到(11)式用到了上面的∑ i=1 m α i y i =0 ,(11)式到(12)式使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+… 的乘法運算法則,(12)式到(13)式僅僅是位置的調整。
仔細觀察可以發現,這個式子和我們上一篇線性可分SVM的一樣。唯一不一樣的是約束條件。現在我們看看我們的優化目標的數學形式:
max α ∑ i=1 m α i −12 ∑ i=1,j=1 m α i α j y i y j x T i x j
s.t.∑ i=1 m α i y i =0
C−α i −μ i =0
α i ≥0(i=1,2,...,m)
μ i ≥0(i=1,2,...,m)
對於C−α i −μ i =0,α i ≥0,μ i ≥0 這3個式子,我們可以消去μ i ,只留下α i ,也就是說0≤α i ≤C 。
同時將優化目標函數變號,求極小值,如下:
min α 12 ∑ i=1,j=1 m α i α j y i y j x T i x j −∑ i=1 m α i
s.t.∑ i=1 m α i y i =0
0≤α i ≤C
這就是軟間隔最大化時的線性可分SVM的優化目標形式,和上一篇的硬間隔最大化的線性可分SVM相比,我們僅僅是多了一個約束條件0≤α i ≤C 。我們依然可以通過SMO算法來求上式極小化時對應的α 向量就可以求出w和b 了。
4. 軟間隔最大化時的支持向量
在硬間隔最大化時,支持向量比較簡單,就是滿足y i (w T x i +b)−1=0 就可以了。根據KKT條件中的對偶互補條件α ∗ i (y i (w T x i +b)−1)=0 ,如果α ∗ i >0 則有y i (w T x i +b)=1
即點在支持向量上,否則如果α ∗ i =0 則有y i (w T x i +b)≥1 ,即樣本在支持向量上或者已經被正確分類。
在軟間隔最大化時,則稍微複雜一些,因爲我們對每個樣本(x i ,y i ) 引入了鬆弛變量ξ i 。我們從下圖來研究軟間隔最大化時支持向量的情況,第i個點到分類超平面的距離爲ξ i ||w|| 2 。根據軟間隔最大化時KKT條件中的對偶互補條件α ∗ i (y i (w T x i +b)−1+ξ ∗ i )=0 我們有:
a) 如果α=0 ,那麼y i (w T x i +b)−1≥0 ,即樣本在支持向量上或者已經被正確分類。如圖中所有遠離支持向量的點。
b) 如果0≤α≤C ,那麼ξ i =0,y i (w T x i +b)−1=0 ,即點在支持向量上。如圖中在虛線支持向量上的點。
c) 如果α=C ,說明這是一個可能比較異常的點,需要檢查此時ξ i
i)如果0≤ξ i ≤1 ,那麼點被正確分類,但是卻在超平面和自己類別的支持向量之間。如圖中的樣本2和4.
ii)如果ξ i =1 ,那麼點在分離超平面上,無法被正確分類。
iii)如果ξ i >1 ,那麼點在超平面的另一側,也就是說,這個點不能被正常分類。如圖中的樣本1和3.
5. 軟間隔最大化的線性可分SVM的算法過程
這裏我們對軟間隔最大化時的線性可分SVM的算法過程做一個總結。
輸入是線性可分的m個樣本(x 1 ,y 1 ),(x 2 ,y 2 ),...,(x m ,y m ), ,其中x爲n維特徵向量。y爲二元輸出,值爲1,或者-1.
輸出是分離超平面的參數w ∗ 和b ∗ 和分類決策函數。
算法過程如下:
1)選擇一個懲罰係數C>0 ,
構造約束優化問題
min α 12 ∑ i=1,j=1 m α i α j y i y j x T i x j −∑ i=1 m α i
s.t.∑ i=1 m α i y i =0
0≤α i ≤C
2)用SMO算法求出上式最小時對應的α 向量的值α ∗ 向量.
3) 計算w ∗ =∑ i=1 m α ∗ i y i x i
4) 找出所有的S個支持向量,即滿足0<α s <C 對應的樣本(x s ,y s ) ,通過 y s (∑ i=1 S α i y i x T i x s +b)=1 ,計算出每個支持向量(x x ,y s ) 對應的b ∗ s ,計算出這些b ∗ s =y s −∑ i=1 S α i y i x T i x s .
所有的b ∗ s 對應的平均值即爲最終的b ∗ =1S ∑ i=1 S b ∗ s
這樣最終的分類超平面爲:w ∗ ∙x+b ∗ =0 ,最終的分類決策函數爲:f(x)=sign(w ∗ ∙x+b ∗ )
6. 合頁損失函數
線性支持向量機還有另外一種解釋如下:
min w,b [1−y i (w∙x+b)] + +λ||w|| 2 2
其中L(y(w∙x+b))=[1−y i (w∙x+b)] + 稱爲合頁損失函數(hinge
loss function),下標+表示爲:
[z] + ={z0 z>0z≤0
也就是說,如果點被正確分類,且函數間隔大於1,損失是0,否則損失是1−y(w∙x+b) ,如下圖中的綠線。我們在下圖還可以看出其他各種模型損失和函數間隔的關係:對於0-1損失函數,如果正確分類,損失是0,誤分類損失1,
如下圖黑線,可見0-1損失函數是不可導的。對於感知機模型,感知機的損失函數是[−y i (w∙x+b)] + ,這樣當樣本被正確分類時,損失是0,誤分類時,損失是−y i (w∙x+b) ,如下圖紫線。對於邏輯迴歸之類和最大熵模型對應的對數損失,損失函數是log[1+exp(−y(w∙x+b))] ,
如下圖紅線所示。
線性可分SVM通過軟間隔最大化,可以解決線性數據集帶有異常點時的分類處理,但是現實生活中的確有很多數據不是線性可分的,這些線性不可分的數據也不是去掉異常點就能處理這麼簡單。那麼SVM怎麼能處理中這樣的情況呢?我們在下一篇就來討論線性不可分SVM和核函數的原理。