線性可分支持向量機

一般的,當訓練樣本線性可分的時候,如下圖所示:

img

可以找到無數個劃分超平面。而線性可分支持向量機利用間隔最大化來求最優劃分超平面,此時解是唯一的。

通過間隔最大化或者對應的凸二次規劃問題學習到的分離超平面爲:
w x + b = 0 w^*\cdot x+b^*=0
對應的決策函數爲:
f ( x ) = s i g n ( w x + b ) f(x)=sign(w^*\cdot x+b^*)
我們稱上面的的式子爲線性可分的支持向量機。

函數間隔與幾何間隔

給定分離超平面 w x + b = 0 w\cdot x + b = 0 w x + b |w\cdot x + b | 能相對的表示x到超平面的距離。通過分析標籤值y與 w x + b w\cdot x + b 符號的是否一致能夠表示分類是否正確,於是可以用 y ( w x + b ) y(w\cdot x + b) 的符號來表示是否分類正確及確信度,這就是函數間隔。爲此,對於樣本 ( x i , y i ) (x_i, y_i) 我們定義函數間隔 γ ^ i \hat \gamma_i 爲:
γ ^ i = y i ( w x i + b ) \hat \gamma_i = y_i(w \cdot x_i + b)
對於有N個樣本的數據集T,定義數據集T的函數間隔爲:所有樣本點的函數間隔的最小值,即:
γ ^ i = min i = 1 , 2 , . . . , N γ ^ i = min i = 1 , 2 , . . . , N y i ( w x i + b ) (1) \hat \gamma_i = \min\limits_{i=1,2,...,N}\hat \gamma_i = \min\limits_{i=1,2,...,N} y_i(w\cdot x_i + b) \tag 1

如果成比例的改變w和b爲2w和2b,那麼函數間隔變爲了原來2倍,爲了消除這樣的影響,我們限定L2範數 w = 1 \|w\|=1 ,此時函數間隔就成爲了幾何間隔。

下圖給出了超平面 ( w , b ) (w,b) 及其法向量w:

在這裏插入圖片描述

點A表示某一實例 ( x i , y i ) (x_i,y_i) ,A到超平面的距離由AB給出,記作 γ i \gamma_i
γ i = w x i + b w \gamma_i = \frac{w\cdot x_i + b}{||w||}
無論樣本是正例還是負例,當樣本被正確分類時,到超平面的距離爲:
γ i = y i ( w x i + b ) w \gamma_i = \frac{y_i(w\cdot x_i + b)}{||w||}
我們定義上面的式子爲某個樣本到超平面的集合間隔。

對於有N個樣本的數據集T,定義數據集T的幾何間隔爲:所有樣本點的幾何間隔的最小值,即:
γ = min i = 1 , . . . , N γ i = min i = 1 , . . . , N γ i y i ( w x i + b ) w (2) \gamma = \min\limits_{i=1,...,N} \gamma_i = \min\limits_{i=1,...,N}\gamma_i \frac{y_i(w \cdot x_i + b)}{||w||} \tag 2
由函數間隔和幾何間隔的定義(1),(2)可知:
γ i = γ ^ i w \gamma_i = \frac{\hat\gamma_i}{||w||}

γ = γ ^ w (3) \gamma = \frac{\hat\gamma}{||w||} \tag 3

如果限定 w = 1 \|w\|=1 ,那麼函數間隔就等於幾何間隔。

SVM模型

對於線性可分的數據可以找到無數個將數據劃分的超平面,但是距離超平面較遠的點對超平面的確定沒有很大的影響。因此,我們把注意力放在距離超平面較近的點上,如下圖中紅色框選擇的點。如果我們讓距離超平面最近的點(圖中)到超平面的距離最大化,那麼就可以認爲這樣的劃分超平面即使對於較難分類正確的點,也能得到較好的劃分結果。

在這裏插入圖片描述

線性可分的SVM目標是找到間隔最大化的劃分超平面,所謂間隔最大化是指:對給定的數據集的點,劃分超平面不僅可以可以區分正例負例,而且還能使得最難分類的點有足夠大的確信度使得他們分開,這樣的平面對未知的樣本實例有更好的分類能力。

要求幾何間隔最大的分離超平面,可以轉化爲求解下面的最優化問題:
max w , b γ s . t . y i ( w x i + b ) w γ i = 1 , 2 , . . . , N \max\limits_{w,b} \gamma \\ s.t. \quad \frac{y_i(w \cdot x_i + b)}{||w||} \ge \gamma\\i=1,2,...,N
由由函數間隔和幾何間隔關係的公式(3)可以將問題轉化爲:
max w , b γ ^ w s . t . y i ( w x i + b ) γ ^ i = 1 , 2 , . . . , N \max\limits_{w,b} \frac{\hat\gamma}{\|w\|} \\ s.t. \quad y_i(w \cdot x_i + b) \ge \hat\gamma\\i=1,2,...,N
根據上面的式子,不難得出,SVM的思想是:讓距離劃分超平面最近的點(支持向量)到劃分超平面的距離最大化。

實際上,當我們成倍的改變 w , b w,b λ w , λ b \lambda w ,\lambda b ,函數間隔也變爲 λ γ ^ \lambda \hat \gamma ,並不能改變約束條件中的不等式的關係。因此,爲了簡化計算,我們可以取 γ ^ = 1 \hat\gamma=1 。並且,最大化 1 w \frac{1}{\|w\|} 和最小化 1 2 w 2 \frac{1}{2} \|w \|^2 等價,於是優化目標轉化爲:
min w , b 1 2 w 2 ; s . t 1 y i ( w x i + b ) 0 ( i = 1 , 2 , . . . m ) (4) \min\limits_{w,b} \frac{1}{2}||w||^2 ;\quad s.t \quad 1- y_i(w \cdot x_i + b) \leq 0 \quad (i =1,2,...m) \tag 4
顯然式子(4)是凸二次規劃問題。要注意的是,訓練樣本中存在某些樣本點使得約束條件取得等號:
y i ( w x i + b ) 1 = 0 y_i(w \cdot x_i + b) -1 = 0
這樣的點就是上面圖片中紅色方框對應的點,他們位於和決策超平面距離爲1的位置上,我們稱這樣的點叫做支持向量。在決定分離超平面的時候,只有這些支持向量起到了作用。由於支持向量對分離超平面的決定性作用,所以將這樣的分類模型叫做支持向量機。

SVM求解

爲了求解支持向量機的最優化模型(4),我們需要使用拉格朗日對偶性來得到對偶問題,間接得到原始問題的最優解。這麼做的好處是

  1. 對偶問題的計算量更小,更容易求解。
  2. 自然的引入核函數,進而推廣到非線性可分問題。

首先需要構造拉格朗日函數,引入拉格朗日乘子 α i 0 \alpha_i \geq 0 後,得到:
L ( w , b , α ) = 1 2 w 2 + i = 1 m α i [ 1 y i ( w T x i + b ) ] (5) L(w,b,\alpha) = \frac{1}{2}||w||^2 + \sum\limits_{i=1}^{m}\alpha_i[1-y_i(w^Tx_i + b)] \tag 5
其中, α = ( α 1 , α 2 , . . . , α m ) \alpha=(\alpha_1, \alpha_2,..., \alpha_m) 爲拉格朗日乘子向量。

原始問題等價於:
min w , b max α L ( w , b , α ) \min \limits_{w,b} \max\limits_{\alpha}L(w,b,\alpha)
根據拉格朗日對偶性,所以原始問題的對偶問題是:
max α min w , b L ( w , b , α ) (6) \max\limits_\alpha\min\limits_{w,b}L(w,b,\alpha) \tag 6
若原始問題與對偶問題有相同的解 w , b , α w^*, b^*, \alpha^* ,則要滿足KKT條件:
w L ( w , b , α ) = w i = 1 m α i y i x i = 0 ( K K T . 1 ) b L ( w , b , α ) = i = 1 m α i y i = 0 ( K K T . 2 ) α ( y i ( w T x i + b ) 1 ) = 0 ( K K T . 3 ) y i ( w T x i + b ) 1 0 ( K K T . 4 ) a i 0 , i = 1 , 2 , . . . m ( K K T . 5 ) \nabla_wL(w^*, b^*, \alpha^*) = w^*-\sum\limits_{i=1}^{m}\alpha_iy_ix_i = 0 \quad\quad (KKT.1) \\ \nabla_bL(w^*, b^*, \alpha^*) = -\sum\limits_{i=1}^{m}\alpha_iy_i = 0 \quad\quad (KKT.2) \\ \alpha^*(y_i(w^{*T}x_i+b^*)-1) = 0 \quad\quad (KKT.3) \\ y_i(w^{*T}x_i+b^*)-1 \ge 0 \quad\quad\quad (KKT.4) \\ a_i^* \ge 0,\quad i=1,2,...m \quad\quad\quad (KKT.5)
其中公式(KKT.3)爲KKT對偶互補條件,可以知道當 α > 0 \alpha^*>0 則有 ( y i ( w T x i + b ) 1 ) = 0 (y_i(w^{*T}x_i+b^*)-1) = 0 ,此時的樣本 x i x_i 對應的點爲支持向量。

所以我們通過求對偶問題的解間接得到原始問題的最優解,這樣可以簡小計算量,這就是SVM的對偶算法。

首先需要求 L ( w , b , α ) L(w,b,\alpha) w , b w,b 的極小,再求對 α \alpha 的極大。

假設: ψ ( α ) = min w , b L ( w , b , α ) \psi(\alpha) = \min\limits_{w,b}L(w,b,\alpha)

將拉格朗日函數分別對w,b求偏導並令其等於0,得到:
L ( w , b , α ) w = 0    w = i = 1 m α i y i x i (7) \frac{\partial L(w,b,\alpha)}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i \tag 7

L ( w , b , α ) b = 0    i = 1 m α i y i = 0 (8) \frac{\partial L(w,b,\alpha)}{\partial b} = 0 \;\Rightarrow \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \tag 8

上面的式子已經得到了w和α的關係,只要我們後面求得使得對偶函數極大化的α,記得求得w。將式子(7),(8)代入(5)得到:
ψ ( α ) = 1 2 w 2 i = 1 m α i [ y i ( w T x i + b ) 1 ] = 1 2 w T w i = 1 m α i y i w T x i i = 1 m α i y i b + i = 1 m α i = 1 2 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 = 1 2 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 = 1 2 w T i = 1 m α i y i x i i = 1 m α i y i b + i = 1 m α i = 1 2 w T i = 1 m α i y i x i b i = 1 m α i y i + i = 1 m α i = 1 2 ( 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 = 1 2 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 = 1 2 i = 1 m α i y i x i T i = 1 m α i y i x i + i = 1 m α i = 1 2 i = 1 , j = 1 m α i y i x i T α j y j x j + i = 1 m α i = i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j \begin{aligned} \psi(\alpha) & = \frac{1}{2}||w||^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{aligned}
即:
ψ ( α ) = min w , b L ( w , b , α ) = i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j \psi(\alpha) = \min\limits_{w,b}L(w,b,\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
接下來,對 ψ ( α ) = min w , b L ( w , b , α ) \psi(\alpha) = \min\limits_{w,b}L(w,b,\alpha) 求極大:
max α ψ ( α ) = max α i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j (9) \max\limits_{\alpha}\psi(\alpha) = \max\limits_{\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 \tag 9

s . t . i = 1 m α i y i x i = 0 α i 0 , i = 1 , 2 , . . . , N s.t. \quad \sum\limits_{i=1}^{m}\alpha_iy_ix_i =0\\ \alpha_i \geq 0, i=1,2,...,N

將式子(9)的目標函數轉換成求極小,得到等級的對偶最優化問題:
min α 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j i = 1 m α i (10) \min\limits_{\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 \tag{10}

s . t . i = 1 m α i y i x i = 0 α i 0 , i = 1 , 2 , . . . , m s.t. \quad \sum\limits_{i=1}^{m}\alpha_iy_ix_i =0 \\ \alpha_i \geq 0, i=1,2,...,m

只要我們可以求出上式極小化時對應的α向量就可以求出w和b了。具體怎麼極小化上式得到對應的α,一般需要用到SMO算法,這個算法比較複雜,我們後面會專門來講。在這裏,我們假設通過SMO算法,我們得到了對應的α的值 α α^∗ ,那麼根據 w = i = 1 m α i y i x i w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i 可以得到對應的 w w^* 的值:
w = i = 1 m α i y i x i w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i
正如上文討論的,只有支持向量對決策平面有影響,其他樣本則沒有。選擇 α \alpha^* 的任意一個正分量 α j > 0 \alpha^*_j \gt 0 ,按下面的式子得到 b b^ *
b = y j ( w ) T x j = y j i = 1 m α i y i x i T x j b^* = y_j - (w^*)^Tx_j = y_j -\sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i^Tx_j
根據上面KKT條件中 α ( y i ( w T x i + b ) 1 ) = 0 \alpha^*(y_i(w^{*T}x_i+b^*)-1) = 0 這個對偶互補條件,可以知道當 α > 0 \alpha^*>0 則有 ( y i ( w T x i + b ) 1 ) = 0 (y_i(w^{*T}x_i+b^*)-1) = 0 ,此時的樣本 x i x_i 對應的點到劃分超平面的距離爲1,也就是所謂的支持向量。因此,任意 α j > 0 \alpha^*_j \gt 0 對應的樣本 x j x_j 爲支持向量。

假設我們有S個支持向量,對於任意支持向量 ( x s , y s ) (x_s, y_s) 可以解得 b b^* 。但是由於數據集T嚴格線性可分,所以劃分超平面是唯一的,於是通過任意支持向量 ( x s , y s ) (x_s, y_s) 得到的 b b^* 都是一樣的。

最終得到的劃分超平面爲:
w T x + b = 0 w^{*T}x+b^* = 0
最終的分類決策函數爲:
f ( x ) = s i g n ( w T x + b ) f(x) = sign(w^{*T} x + b^{*})

線性可分SVM的算法流程

輸入:線性可分的m個樣本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , {(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),}

輸出:分離超平面的參數 w w^{*} b b^{*} 和分類決策函數。

(1) 構造優化問題:
min α 1 2 i = 1 , j = 1 m α i α j y i y j x i T x j i = 1 m α i \min\limits_{\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 . i = 1 m α i y i x i = 0 α i 0 , i = 1 , 2 , . . . , m s.t. \quad \sum\limits_{i=1}^{m}\alpha_iy_ix_i =0 \\ \alpha_i \geq 0, i=1,2,...,m

(2) 採用SMO算法求出使得上式極小化的 α \alpha^*

(3) 計算 w = i = 1 m α i y i x i w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i

(4) 找到某個滿足 α j > 0 \alpha_j > 0 對應的支持向量 ( x j , y j ) (x_j,y_j) ,計算:
b = y j ( w ) T x j = y j i = 1 m α i y i x i T x j b^* = y_j - (w^*)^Tx_j = y_j -\sum\limits_{i=1}^{m}\alpha_i^{*}y_ix_i^Tx_j
(5) 得到劃分超平面與決策函數:
w T x + b = 0 f ( x ) = s i g n ( w T x + b ) w^{*T}x+b^* = 0 \\ f(x) = sign(w^{*T} x + b^{*})

侷限性

本文介紹的是基於硬間隔最大化的SVM算法,對於線性不可分的數據,由於異常點的存在,無法找到劃分超平面,本文的算法無法使用。下一篇介紹的軟間隔最大化SVM算法可以解決這裏問題。

參考文章:

《統計學習方法 第二版》

支持向量機原理(一) 線性支持向量機