1. 程式人生 > >機器學習回顧篇(11):支援向量機(SVM)

機器學習回顧篇(11):支援向量機(SVM)

 

1. 引言¶

SVM,Support Vector Machine,也就是我們中文名的支援向量機,我相信,只要是與機器學習有過照面的童鞋或多或少都聽說過這個名字。作為機器學習家族中的老牌成員,其經典自不必說。從原理和特性上講,SVM屬於有監督學習中線性二分類中的一員,基本思想就是採用最大化間隔策略尋找一個最優決策超平面將所有樣本點劃分到平面兩側,實現對資料的分類。

注意幾個關鍵詞:線性、二分類、最大化間隔。這麼一說,你可能會以為SVM演算法只能用於線性可分問題和和二分類問題中,然而,事實卻是SVM演算法在非線性和多分類場景中有卓越表現,這並不矛盾,至於原因,下文中會陸續解答。

先來說說超平面和最大化間隔,這是SVM演算法的根本所在。

2. 支援向量與最大化間隔¶

因為SVM演算法探究的是一個線性可分的二分類問題,首要任務就尋找一個超平面。這裡的超平面,定義的是$n$維線性空間中維度為$n-1$的子空間,可以把線性空間分割成不相交的兩部分。一般的,在數學上,超平面表示如下:

$${w^T}x + b = 0 \tag{1}$$

 

不需要想得太複雜,想想3維以下的空間就可以理解了,例如在二維空間中,超平面就表現為一維的直線,它把平面分成了兩塊,對於直線的表示,大家都不陌生:$wx + b = 0$,這時候的$x$就是一個一維向量;三維空間中,超平面就是二維的平面,它把空間分成了兩塊,這個二維平面表示為:${w_1}{x_1} + {w_2}{x_2} = 0$。對於更高的n維空間原理是一樣的。

對於資料空間中給定的樣本集合$D = \{ ({x_1},{y_1}),({x_2},{y_2}), \cdots ,({x_N},{y_N})\} $,其中${x_i} \in X = {R^n}$,${y_i} \in Y = \{ - 1, + 1\} $,SVM演算法的目標就是尋找一個超平面將資料集$D$劃分為兩個不相交的子集,對於兩個子集分別滿足當${y_i} = + 1$時,${w^T}{x_i} + b > 0$,當${y_i} = - 1$時,${w^T}{x_i} + b < 0$,即:

$${y_i}({w^T}{x_i} + b) > 0 \tag{2}$$

但是,對與任意線性可分資料集,滿足這一條件超平面都不可能不只一個,以我們熟悉的二維空間為例,如下圖所示:

在上面圖中,有數量不等的藍點和紅點,分別代表著資料集中的+1類和-1類,在圖中我們可以看到,直線A、B、C、D都滿足上述兩個條件,可以做到能將資料集進行正確分類,但是哪一條才是最優的呢?

從直觀上來判斷,我相信大家都會選擇B(紅色那條)最優,具有最強的魯棒性。因為它與藍點和紅點都有足夠的距離,如果選擇其他直線,例如C,它與紅點非常接近,如果資料稍有波動,就容易越過C線被誤判為藍點所在類別(+1類)。

所以,我們會選擇離兩邊資料集都儘量遠的超平面來劃分資料空間,這樣的誤判率會低一些——這就是間隔最大化選取超平面的方法。其中離超平面最近的點,我們稱之為支援向量。

假設樣本$({x_i},y_i)$就是資料集$D$中的支援向量,$({x_i},y_i)$到超平面${w^T}x + b = 0$的幾何距離可以表示為: $$\frac{{|{w^T}{x_i} + b|}}{{\left\| w \right\|}}$$

支援向量機演算法的思想就是最大化這個距離,即: $$\max \frac{{|{w^T}{x_i} + b|}}{{\left\| w \right\|}}\tag{3}$$

式(3)太過於複雜,我們可以進一步化簡。因為$x_i$與$y_i$是同號的,所以${y_i}({w^T}{x_i} + b) > 0$,那麼式(3)可轉化為: $$\max \frac{{{y_i}({w^T}{x_i} + b)}}{{\left\| w \right\|}} \tag{4}$$

對於式(4)中的分子${{y_i}({w^T}{x_i} + b)}$,許多教材中定義了一個專門的概念,那就是函式距離,當引數$w$和$b$固定時,點與超平面間的間隔越大,函式間隔越大。但函式間隔有一個不好的地方,當引數$w$和$b$按比例縮放時,所描述的超平面不會發生變化,但是函式距離卻會跟著按比例縮放。為了克服這一不足,我們可以將函式距離固定為一個確定值,例如縮放到函式距離為1,這樣求解出來的$w$和$b$雖然不是原來的$w$和$b$,但是所確定的超平面卻是一樣的,所以並不會對我們求解支援向量機最優超平面造成影響。那麼,式(4)就再次化簡為: $$\max \frac{1}{{\left\| w \right\|}}$$

因為我們剛假設支援向量到超平面的函式距離為1,所以,對於資料集中任意樣本到超平面的函式距離都至少為1,求解時必須考慮上這一約束條件。另外,最大化$\frac{1}{{\left\| w \right\|}}$和最小化${\frac{1}{2}{{\left\| w \right\|}^2}}$是等價的,所以,支援向量機最大化間隔可以表示為如下優化問題: $$\eqalign{ & \mathop {\min }\limits_{w,b} {\text{ }}\frac{1}{2}{\left\| w \right\|^2} \tag{5}\cr & s.t.{\text{ }}{y_i}({w^T}{x_i} + b) \geqslant 1,{\text{ }}i = 1,2, \cdots ,N \cr} $$

3 優化與求解¶

很明顯,式(5)是一個二次凸優化問題(簡單來說,如果目標函式是二次函式且約束函式是線性的,這類問題就是二次凸優化問題),對於這類問題,可以引入拉格朗日乘子法進行轉化,將有約束條件的問題轉化為無約束條件的問題進行求解。於是式(5)就可以轉化為:

$$\eqalign{ & \mathop {\min }\limits_{w,b} \mathop {{\text{max}}}\limits_\lambda {\text{ }}L(w,b,\lambda ) \tag{6}\cr & s.t.{\text{ }}{\lambda _i} \geqslant 0,{\text{ }}i = 1,2, \cdots ,N \cr} $$$$L(w,b,\lambda ) = \frac{1}{2}{\left\| w \right\|^2} - \sum\limits_{i = 1}^N {{\lambda _i}({y_i}({w^T}{x_i} + b)-1)}\tag{7}$$

式中,$\lambda $為拉格朗日乘子。
如果你不理解從式(5)到式(6)的轉化原理和細節,沒關係,你姑且可以認為這就是公理,套公式就好了。此時,式(6)對引數$w$和$b$已經是沒有約束條件了。接下來,根據拉格朗日的對偶性,我們不妨將式(6)中求最大值的最小值問題轉化為求最小值的最大值問題,不理解沒關係,姑且認為就是將max和min交換一下位置,對我們的最終結果不會有太大影響,但是卻方便求解。轉化後,式(6)如下: $$\eqalign{ & \mathop {{\text{max}}}\limits_\lambda \mathop {\min }\limits_{w,b} {\text{ }}L(w,b,\lambda ) \tag{8}\cr & s.t.{\text{ }}{\lambda _i} \geqslant 0,{\text{ }}i = 1,2, \cdots ,N \cr} $$ 在式(7)中,第一步要做的就是求$\mathop {\min }\limits_{w,b} {\text{ }}L(w,b,\lambda )$,也就是$L(w,b,\lambda )$的最小值,我們可以通過求$L(w,b,\lambda )$對$w$和$b$的偏導,並令偏導為$0$的方式來求解。 $$\frac{{\partial L(w,b,\lambda )}}{{\partial w}} = w - \sum\limits_{i = 1}^N {{\lambda _i}{y_i}{x_i}} = 0$$ $$\frac{{\partial L(w,b,\lambda )}}{{\partial b}} = - \sum\limits_{i = 1}^N {{\lambda _i}{y_i}} = 0$$ 於是有: $$w = \sum\limits_{i = 1}^N {{\lambda _i}{y_i}{x_i}} \tag{9}$$ $$\sum\limits_{i = 1}^N {{\lambda _i}{y_i}} = 0 \tag{10}$$ 將拉格朗日函式,也就是式(7)中展開,得: $$L(w,b,\lambda ) = \frac{1}{2}{\left\| w \right\|^2} - {w^T}\sum\limits_{i = 1}^N {{\lambda _i}{y_i}{x_i}} - b\sum\limits_{i = 1}^N {{\lambda _i}{y_i}} + \sum\limits_{i = 1}^N {{\lambda _i}} \tag{11}$$ 式(9)代入式(11)再結合(10)進行化簡: $$\displaylines{ L(w,b,\lambda ) = \frac{1}{2}{\left\| w \right\|^2} - \sum\limits_{i = 1}^N {{\lambda _i}({y_i}({w^T}{x_i} + b) - 1)} \cr = \frac{1}{2}{\left\| w \right\|^2} - {w^T}\sum\limits_{i = 1}^N {{\lambda _i}{y_i}{x_i}} - b\sum\limits_{i = 1}^N {{\lambda _i}{y_i}} + \sum\limits_{i = 1}^N {{\lambda _i}} \cr = \frac{1}{2}{\left\| w \right\|^2} - {w^T}w - b \cdot 0 + \sum\limits_{i = 1}^N {{\lambda _i}} \cr = - \frac{1}{2}{\left\| w \right\|^2} + \sum\limits_{i = 1}^N {{\lambda _i}} \cr = - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{i = 1}^N {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j}} } + \sum\limits_{i = 1}^N {{\lambda _i}} \cr} $$ 即: $$\mathop {\min }\limits_{w,b} L(w,b,\lambda ) = - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{i = 1}^N {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j}} } + \sum\limits_{i = 1}^N {{\lambda _i}} $$

至此,式(8)可以轉化為如下形式: $$\eqalign{ & \mathop {\max }\limits_\lambda {\text{ }} - \frac{1}{2}\sum\limits_{i = 1}^N {\sum\limits_{i = 1}^N {{\lambda _i}{\lambda _j}{y_i}{y_j}{x_i}{x_j}} } + \sum\limits_{i = 1}^N {{\lambda _i}} \tag{12}\cr & s.t.{\text{ }}{\lambda _i} \geqslant 0,{\text{ }}\sum\limits_{i = 1}^N {{\lambda _i}{y_i}} = 0,{\text{ }}i = 1,2, \cdots ,N \cr} $$ 可以看出,這是一個二次規劃的問題,問題規模正比於訓練樣本數,我們常用 SMO(Sequential Minimal Optimization) 演算法求解。對於SMO演算法求解過程,感覺有些複雜(我也沒看明白),不敢多想說,後續完全弄明白再補充。此刻,我們假設通過SMO演算法求解出式(12)最優解為${\lambda ^*}$,將${\lambda ^*}$代入式(9)可的引數$w$的最優解: $${w^*} = \sum\limits_{i = 1}^N {\lambda _i^*{y_i}{x_i}} $$ 對於引數$b$,由Kuhn Tuker定理可知,式(12)的最優解必須滿足一下最優化條件(KKT條件): $${\lambda ^*}[{y_i}({w^*}{x_i} + {b^*}) - 1] = 0 \tag{13}$$ 式(13)要成立,就必須是${\lambda ^*}=0$或者${y_i}({w^*}{x_i} + {b^*}) = 1$。對於${\lambda ^*}=0$,肯定是不能成立的,可以通過反證法證明。如果${\lambda ^*}=0$成立,通過式(9)可知必然使得$w^*=0$,而$w^*=0$顯然不是式(5)的解,產生矛盾,因此${\lambda ^*}$不能為0。
所以${y_i}({w^*}{x_i} + {b^*}) = 1$必然適用。對於這個條件,若要滿足,$x_i$必然是是支援向量,這也是為什麼只有支援向量才能絕對最終的最優超平面的原因。將式(9)代入${y_i}({w^*}{x_i} + {b^*}) = 1$中,然後移項可得: $${b^*} = {y_j} - \sum\limits_{i = 1}^N {\lambda _i^*{y_i}{x_i}} {x_j}$$ $w^*$和$b^*$求解出來了,最終的最優超平面自然也就確定了。

4 總結¶

本文總結了在資料集線性可分情況下,使用支援向量機演算法進行分類的思想——硬間隔最大化。然而,在多數應用中,資料集並非線性可分,如果只是在分類邊界附近少數點造成線性不可分,這種情況下需要在硬間隔最大化目標函式基礎上,引入鬆弛變數和懲罰因子,然後通過拉格朗日對偶性求解,這種方法稱為軟間隔最大化。如果大量樣本線性不可分,則需要引入核技巧,往高維空間對映,轉化為線性可分。對於這兩部分內容,在後續部落格中在總結了(吐槽一下,寫這類部落格,真是耗時、費神、心累)。

<