在支持向量機原理(一) 線性支持向量機中,咱們對線性可分SVM的模型和損失函數優化作了總結。最後咱們提到了有時候不能線性可分的緣由是線性數據集裏面多了少許的異常點,因爲這些異常點致使了數據集不能線性可分,本篇就對線性支持向量機如何處理這些異常點的原理方法作一個總結。優化
有時候原本數據的確是可分的,也就是說能夠用 線性分類SVM的學習方法來求解,可是卻由於混入了異常點,致使不能線性可分,好比下圖,原本數據是能夠按下面的實線來作超平面分離的,能夠因爲一個橙色和一個藍色的異常點致使咱們無法按照上一篇線性支持向量機中的方法來分類。url
另一種狀況沒有這麼糟糕到不可分,可是會嚴重影響咱們模型的泛化預測效果,好比下圖,原本若是咱們不考慮異常點,SVM的超平面應該是下圖中的紅色線所示,可是因爲有一個藍色的異常點,致使咱們學習到的超平面是下圖中的粗虛線所示,這樣會嚴重影響咱們的分類模型預測效果。htm
如何解決這些問題呢?SVM引入了軟間隔最大化的方法來解決。blog
所謂的軟間隔,是相對於硬間隔說的,咱們能夠認爲上一篇線性分類SVM的學習方法屬於硬間隔最大化。get
回顧下硬間隔最大化的條件:$$min\;\; \frac{1}{2}||w||_2^2 \;\; s.t \;\; y_i(w^Tx_i + b) \geq 1 (i =1,2,...m)$$
接着咱們再看如何能夠軟間隔最大化呢?
SVM對訓練集裏面的每一個樣本$(x_i,y_i)$引入了一個鬆弛變量$\xi_i \geq 0$,使函數間隔加上鬆弛變量大於等於1,也就是說:$$y_i(w\bullet x_i +b) \geq 1- \xi_i$$
對比硬間隔最大化,能夠看到咱們對樣本到超平面的函數距離的要求放鬆了,以前是必定要大於等於1,如今只須要加上一個大於等於0的鬆弛變量能大於等於1就能夠了。固然,鬆弛變量不能白加,這是有成本的,每個鬆弛變量$\xi_i$, 對應了一個代價$\xi_i$,這個就獲得了咱們的軟間隔最大化的SVM學習條件以下:$$min\;\; \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i $$ $$ s.t. \;\; y_i(w^Tx_i + b) \geq 1 - \xi_i \;\;(i =1,2,...m)$$ $$\xi_i \geq 0 \;\;(i =1,2,...m)$$
這裏,$C>0$爲懲罰參數,能夠理解爲咱們通常回歸和分類問題正則化時候的參數。$C$越大,對誤分類的懲罰越大,$C$越小,對誤分類的懲罰越小。
也就是說,咱們但願$\frac{1}{2}||w||_2^2$儘可能小,誤分類的點儘量的少。C是協調二者關係的正則化懲罰係數。在實際應用中,須要調參來選擇。
這個目標函數的優化和上一篇的線性可分SVM的優化方式相似,咱們下面就來看看怎麼對線性分類SVM的軟間隔最大化來進行學習優化。
和線性可分SVM的優化方式相似,咱們首先將軟間隔最大化的約束問題用拉格朗日函數轉化爲無約束問題以下:$$L(w,b,\xi,\alpha,\mu) = \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1 + \xi_i] - \sum\limits_{i=1}^{m}\mu_i\xi_i $$
其中 $\mu_i \geq 0, \alpha_i \geq 0$,均爲拉格朗日系數。
也就是說,咱們如今要優化的目標函數是:$$\underbrace{min}_{w,b,\xi}\; \underbrace{max}_{\alpha_i \geq 0, \mu_i \geq 0,} L(w,b,\alpha, \xi,\mu)$$
這個優化目標也知足KKT條件,也就是說,咱們能夠經過拉格朗日對偶將咱們的優化問題轉化爲等價的對偶問題來求解以下:$$\underbrace{max}_{\alpha_i \geq 0, \mu_i \geq 0,} \; \underbrace{min}_{w,b,\xi}\; L(w,b,\alpha, \xi,\mu)$$
咱們能夠先求優化函數對於$w, b, \xi $的極小值, 接着再求拉格朗日乘子$\alpha$和 $\mu$的極大值。
首先咱們來求優化函數對於$w, b, \xi $的極小值,這個能夠經過求偏導數求得:$$\frac{\partial L}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i $$ $$\frac{\partial L}{\partial b} = 0 \;\Rightarrow \sum\limits_{i=1}^{m}\alpha_iy_i = 0$$ $$\frac{\partial L}{\partial \xi} = 0 \;\Rightarrow C- \alpha_i - \mu_i = 0 $$
好了,咱們能夠利用上面的三個式子去消除$w$和$b$了。
$$ \begin{align} L(w,b,\xi,\alpha,\mu) & = \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1 + \xi_i] - \sum\limits_{i=1}^{m}\mu_i\xi_i \\&= \frac{1}{2}||w||_2^2 - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1 + \xi_i] + \sum\limits_{i=1}^{m}\alpha_i\xi_i \\& = \frac{1}{2}||w||_2^2 - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1] \\& = \frac{1}{2}w^Tw-\sum\limits_{i=1}^{m}\alpha_iy_iw^Tx_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i -\sum\limits_{i=1}^{m}\alpha_iy_iw^Tx_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = - \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - \sum\limits_{i=1}^{m}\alpha_iy_ib + \sum\limits_{i=1}^{m}\alpha_i \\& = - \frac{1}{2}w^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - b\sum\limits_{i=1}^{m}\alpha_iy_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}(\sum\limits_{i=1}^{m}\alpha_iy_ix_i)^T(\sum\limits_{i=1}^{m}\alpha_iy_ix_i) - b\sum\limits_{i=1}^{m}\alpha_iy_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}\sum\limits_{i=1}^{m}\alpha_iy_ix_i^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i - b\sum\limits_{i=1}^{m}\alpha_iy_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}\sum\limits_{i=1}^{m}\alpha_iy_ix_i^T\sum\limits_{i=1}^{m}\alpha_iy_ix_i + \sum\limits_{i=1}^{m}\alpha_i \\& = -\frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_iy_ix_i^T\alpha_jy_jx_j + \sum\limits_{i=1}^{m}\alpha_i \\& = \sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j \end{align}$$
其中,(1)式到(2)式用到了$C- \alpha_i - \mu_i = 0$, (2)式到(3)式合併了同類項,(3)式到(4)式用到了範數的定義$||w||_2^2 =w^Tw$, (4)式到(5)式用到了上面的$w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i$, (5)式到(6)式把和樣本無關的$w^T$提早,(6)式到(7)式合併了同類項,(7)式到(8)式把和樣本無關的$b$提早,(8)式到(9)式繼續用到$w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i$,(9)式到(10)式用到了向量的轉置。因爲常量的轉置是其自己,全部只有向量$x_i$被轉置,(10)式到(11)式用到了上面的$\sum\limits_{i=1}^{m}\alpha_iy_i = 0$,(11)式到(12)式使用了$(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…$的乘法運算法則,(12)式到(13)式僅僅是位置的調整。
仔細觀察能夠發現,這個式子和咱們上一篇線性可分SVM的同樣。惟一不同的是約束條件。如今咱們看看咱們的優化目標的數學形式:$$ \underbrace{ max }_{\alpha} \sum\limits_{i=1}^{m}\alpha_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j $$ $$ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 $$ $$ C- \alpha_i - \mu_i = 0 $$ $$ \alpha_i \geq 0 \;(i =1,2,...,m)$$ $$ \mu_i \geq 0 \;(i =1,2,...,m)$$
對於$ C- \alpha_i - \mu_i = 0 , \alpha_i \geq 0 ,\mu_i \geq 0 $這3個式子,咱們能夠消去$\mu_i$,只留下$\alpha_i$,也就是說$0 \leq \alpha_i \leq C$。 同時將優化目標函數變號,求極小值,以下:$$ \underbrace{ min }_{\alpha} \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j - \sum\limits_{i=1}^{m}\alpha_i $$ $$ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 $$ $$0 \leq \alpha_i \leq C$$
這就是軟間隔最大化時的線性可分SVM的優化目標形式,和上一篇的硬間隔最大化的線性可分SVM相比,咱們僅僅是多了一個約束條件$0 \leq \alpha_i \leq C$。咱們依然能夠經過SMO算法來求上式極小化時對應的$\alpha$向量就能夠求出$w和b$了。
在硬間隔最大化時,支持向量比較簡單,就是知足$y_i(w^Tx_i + b) -1 =0$就能夠了。根據KKT條件中的對偶互補條件$\alpha_{i}^{*}(y_i(w^Tx_i + b) - 1) = 0$,若是$\alpha_{i}^{*}>0$則有$y_i(w^Tx_i + b) =1$ 即點在支持向量上,不然若是$\alpha_{i}^{*}=0$則有$y_i(w^Tx_i + b) \geq 1$,即樣本在支持向量上或者已經被正確分類。
在軟間隔最大化時,則稍微複雜一些,由於咱們對每一個樣本$(x_i,y_i)$引入了鬆弛變量$\xi_i$。咱們從下圖來研究軟間隔最大化時支持向量的狀況,第i個點到對應類別支持向量的距離爲$\frac{\xi_i}{||w||_2}$。根據軟間隔最大化時KKT條件中的對偶互補條件$\alpha_{i}^{*}(y_i(w^Tx_i + b) - 1 + \xi_i^{*}) = 0$咱們有:
a) 若是$\alpha = 0$,那麼$y_i(w^Tx_i + b) - 1 \geq 0$,即樣本在間隔邊界上或者已經被正確分類。如圖中全部遠離間隔邊界的點。
b) 若是$0 < \alpha < C$,那麼$\xi_i = 0 ,\;\; y_i(w^Tx_i + b) - 1 = 0$,即點在間隔邊界上。
c) 若是$\alpha = C$,說明這是一個可能比較異常的點,須要檢查此時$\xi_i$
i)若是$0 \leq \xi_i \leq 1$,那麼點被正確分類,可是卻在超平面和本身類別的間隔邊界之間。如圖中的樣本2和4.
ii)若是$\xi_i =1$,那麼點在分離超平面上,沒法被正確分類。
iii)若是$\xi_i > 1$,那麼點在超平面的另外一側,也就是說,這個點不能被正常分類。如圖中的樣本1和3.
這裏咱們對軟間隔最大化時的線性可分SVM的算法過程作一個總結。
輸入是線性可分的m個樣本${(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),}$,其中x爲n維特徵向量。y爲二元輸出,值爲1,或者-1.
輸出是分離超平面的參數$w^{*}和b^{*}$和分類決策函數。
算法過程以下:
1)選擇一個懲罰係數$C>0$, 構造約束優化問題$$ \underbrace{ min }_{\alpha} \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j - \sum\limits_{i=1}^{m}\alpha_i $$ $$ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 $$ $$0 \leq \alpha_i \leq C$$
2)用SMO算法求出上式最小時對應的$\alpha$向量的值$\alpha^{*}$向量.
3) 計算$w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i$
4) 找出全部的S個支持向量對應的樣本$(x_s,y_s)$,經過 $y_s(\sum\limits_{i=1}^{m}\alpha_iy_ix_i^Tx_s+b) = 1$,計算出每一個支持向量$(x_x, y_s)$對應的$b_s^{*}$,計算出這些$b_s^{*} = y_s - \sum\limits_{i=1}^{m}\alpha_iy_ix_i^Tx_s$. 全部的$b_s^{*}$對應的平均值即爲最終的$b^{*} = \frac{1}{S}\sum\limits_{i=1}^{S}b_s^{*}$
這樣最終的分類超平面爲:$w^{*} \bullet x + b^{*} = 0 $,最終的分類決策函數爲:$f(x) = sign(w^{*} \bullet x + b^{*})$
線性支持向量機還有另一種解釋以下:$$ \underbrace{ min}_{w, b}[1-y_i(w \bullet x + b)]_{+} + \lambda ||w||_2^2$$
其中$L(y(w \bullet x + b)) = [1-y_i(w \bullet x + b)]_{+}$稱爲合頁損失函數(hinge loss function),下標+表示爲:
$$ [z]_{+}=
\begin{cases}
z & {z >0}\\
0& {z\leq 0}
\end{cases}$$
也就是說,若是點被正確分類,且函數間隔大於1,損失是0,不然損失是$1-y(w \bullet x + b)$,以下圖中的綠線。咱們在下圖還能夠看出其餘各類模型損失和函數間隔的關係:對於0-1損失函數,若是正確分類,損失是0,誤分類損失1, 以下圖黑線,可見0-1損失函數是不可導的。對於感知機模型,感知機的損失函數是$[-y_i(w \bullet x + b)]_{+}$,這樣當樣本被正確分類時,損失是0,誤分類時,損失是$-y_i(w \bullet x + b)$,以下圖紫線。對於邏輯迴歸之類和最大熵模型對應的對數損失,損失函數是$log[1+exp(-y(w \bullet x + b))]$, 以下圖紅線所示。
線性可分SVM經過軟間隔最大化,能夠解決線性數據集帶有異常點時的分類處理,可是現實生活中的確有不少數據不是線性可分的,這些線性不可分的數據也不是去掉異常點就能處理這麼簡單。那麼SVM怎麼能處理中這樣的狀況呢?咱們在下一篇就來討論線性不可分SVM和核函數的原理。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com)