在支援向量機原理(一) 線性支援向量機中,我們對線性可分SVM的模型和損失函式優化做了總結。最後我們提到了有時候不能線性可分的原因是線性資料集裡面多了少量的異常點,由於這些異常點導致了資料集不能線性可分,本篇就對線性支援向量機如何處理這些異常點的原理方法做一個總結。
1. 線性分類SVM面臨的問題
有時候本來資料的確是可分的,也就是說可以用 線性分類SVM的學習方法來求解,但是卻因為混入了異常點,導致不能線性可分,比如下圖,本來資料是可以按下面的實線來做超平面分離的,可以由於一個橙色和一個藍色的異常點導致我們沒法按照上一篇線性支援向量機中的方法來分類。
另外一種情況沒有這麼糟糕到不可分,但是會嚴重影響我們模型的泛化預測效果,比如下圖,本來如果我們不考慮異常點,SVM的超平面應該是下圖中的紅色線所示,但是由於有一個藍色的異常點,導致我們學習到的超平面是下圖中的粗虛線所示,這樣會嚴重影響我們的分類模型預測效果。
如何解決這些問題呢?SVM引入了軟間隔最大化的方法來解決。
2. 線性分類SVM的軟間隔最大化
所謂的軟間隔,是相對於硬間隔說的,我們可以認為上一篇線性分類SVM的學習方法屬於硬間隔最大化。
回顧下硬間隔最大化的條件:$$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的軟間隔最大化來進行學習優化。
3. 線性分類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$了。
4. 軟間隔最大化時的支援向量
在硬間隔最大化時,支援向量比較簡單,就是滿足$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.
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$, 構造約束優化問題$$ \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}^{S}\alpha_iy_ix_i^Tx_s+b) = 1$,計算出每個支援向量$(x_x, y_s)$對應的$b_s^{*}$,計算出這些$b_s^{*} = y_s - \sum\limits_{i=1}^{S}\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^{*})$
6. 合頁損失函式
線性支援向量機還有另外一種解釋如下:$$ \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)