SVM支持向量機原理推導

SVM是一個非常經典的監督學習算法。下面給出SVM對於二值分類的原理及推導過程。

1、問題轉化

如下圖所示:
在這裏插入圖片描述想要找一條直線 w x + b = 0 wx+b=0 將圖中紅藍兩類樣本區分開,假設將這條線向左和向右分別平移,接觸到樣本點停止,得到兩條新的直線,設它們分別爲 w x + b = c    wx+b=c\; w x + b = c wx+b=-c
w = w c , b = b c w=\frac{w}{c},b=\frac{b}{c} ,則這兩條直線轉化爲 w x + b = 1    wx+b=1\; w x + b = 1 wx+b=-1 。此時,令 w x + b = 0 wx+b=0 也左右同時除以 c c ,仍得到 w x + b = 0 wx+b=0
SVM的目的即找到直線 w x + b = 0 wx+b=0 ,使得 w x + b = 1    wx+b=1\; w x + b = 1 wx+b=-1 之間的距離 2 d = 2 w 2d=\frac{2}{||w||} 最大。
所以,只要保證:
m i n 1 2 w 2 min\quad \frac{1}{2}||w||^{2}
由於在上圖中紅線的上方 w x + b < 0    wx+b<0\; ,且標籤 y = 1 y=-1 ;而在紅線的下方有 w x + b > 0    wx+b>0\; ,且標籤 y = 1 y=1 ,故有約束條件:
( w x i + b ) y i 1 (wx_{i}+b)y_{i}\geq1
到這裏,此問題已被轉化爲一有約束的優化問題:
{ m i n    1 2 w 2 ( w x i + b ) y i 1 \begin{cases} min\; \frac{1}{2}||w||^{2} \\ (wx_{i}+b)y_{i}\geq1 \end{cases}
對於小樣本問題,可以用拉格朗日乘子法解決。
詳細解法參照 https://blog.csdn.net/qq_36758914/article/details/103324074

2、拉格朗日對偶

此處引入拉格朗日對偶的概念。

1) 原始問題

假設 f ( x ) , c i ( x ) , h j ( x ) f_{(x)}, c_{i(x)}, h_{j(x)} 是定義在 R n R^{n} 上的連續可微函數,考慮約束最優化問題:
m i n x R n f ( x ) \mathop{min}\limits_{x\in R^{n}}f_{(x)}
s . t . c i ( x ) 0    , i = 1 , 2 , , k ; h j ( x ) = 0    , i = 1 , 2 , , l s.t.\quad c_{i(x)}\leq0\;,i=1,2,…,k;\quad h_{j(x)}=0\;,i=1,2,…,l
稱此約束最優化問題爲原始最優化問題或原始問題。
首先,引進廣義拉格朗日函數:
L ( x , α , β ) = f ( x ) + i = 1 k α i c i ( x ) + j = 1 l β j h j ( x ) L_{(x,\alpha,\beta)}=f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}+\sum_{j=1}^{l}\beta_{j}h_{j(x)}
這裏, x = ( x ( 1 ) , x ( 2 ) , , x ( n ) ) T R n x=(x^{(1)},x^{(2)},…,x^{(n)})^{T}\in R^{n} α i ,    β j \alpha_{i},\; \beta_{j} 是拉格朗日乘子, α i 0 \alpha_{i}\geq0 。考慮 x x 的函數:
θ p ( x ) = m a x α ,    β ,    α i 0 L ( x , α , β ) \theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}
假設給定某個 x x ,如果 x x 違反原始問題的約束條件,即存在某個 i i 使得 c i ( x ) > 0    c_{i(x)}>0\; 或者存在某個 j j 使得 h j ( x ) 0 h_{j(x)}\ne0 ,那麼就有:
θ p ( x ) = m a x α ,    β ,    α i 0 [ f ( x ) + i = 1 k α i c i ( x ) + j = 1 l β j h j ( x ) ] = + \theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}[f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}+\sum_{j=1}^{l}\beta_{j}h_{j(x)}]=+\infty
因爲若某個 i i 使得 c i ( x ) > 0 c_{i(x)}>0 ,則可以令 α i + \alpha_{i}\rightarrow+\infty ,若某個 j j 使 h j ( x ) 0 h_{j(x)}\ne0 ,則可令 β j + \beta_{j}\rightarrow+\infty 。以上兩種情況均可以使    θ p ( x ) = + \;\theta_{p(x)}=+\infty
相反地,若 x x 滿足約束條件,則:
θ p ( x ) = m a x α ,    β ,    α i 0 [ f ( x ) + i = 1 k α i c i ( x ) ] \theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}[f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}]
由於 α i 0 \alpha_{i}\geq0 c i ( x ) 0 c_{i(x)}\leq0 ,故 i = 1 k α i c i ( x ) 0 \mathop{\sum}\limits_{i=1}^{k}\alpha_{i}c_{i(x)}\leq0 。所以:
θ p ( x ) = f ( x ) \theta_{p(x)}=f_{(x)}
即:
θ p ( x ) = { f ( x ) , x    滿足原問題約束 + , 其他 \theta_{p(x)}=\begin{cases} f_{(x)}, & \text {x\;滿足原問題約束} \\ +\infty, & \text {其他} \end{cases}
如果考慮極小化問題
m i n x θ p ( x ) = m i n x m a x α ,    β ,    α i 0 L ( x , α , β ) \mathop{min}\limits_{x}\theta_{p(x)}=\mathop{min}\limits_{x} \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}
θ p ( x ) \theta_{p(x)} 的表達式可知, m i n x θ p ( x ) \mathop{min}\limits_{x}\theta_{p(x)} 是與原始最優化問題等價的,也就是說它們的解相同。問題 m i n x m a x α ,    β ,    α i 0 L ( x , α , β ) \mathop{min}\limits_{x} \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)} 被稱爲廣義拉格朗日函數的極小極大問題。

2)對偶問題

定義
θ D ( α , β ) = m i n x L ( x , α , β ) \theta_{D(\alpha,\beta)}=\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}
再考慮極大化 θ D ( α , β ) \theta_{D(\alpha,\beta)} ,即:
m a x α ,    β ,    α i 0 θ D ( α , β ) = m a x α ,    β ,    α i 0 m i n x L ( x , α , β ) \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\theta_{D(\alpha,\beta)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}
問題 m a x α ,    β ,    α i 0 m i n x L ( x , α , β )    \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}\; 稱爲廣義拉格朗日函數的極大極小問題。
若目標函數與所有約束函數皆爲凸函數,則原始問題和它的對偶問題是等價的。
而對於 S V M SVM ,其所有函數皆爲凸函數。

3、SVM的對偶問題

{ m i n    1 2 w 2 ( w x i + b ) y i 1 \begin{cases} min\; \frac{1}{2}w^{2} \\ (wx_{i}+b)y_{i}\geq1 \end{cases}
其廣義拉格朗日函數爲:
L ( w , b , α ) = 1 2 w 2 + i = 1 N α i [ 1 ( w x i + b ) y i ] L_{(w,b,\alpha)}=\frac{1}{2}w^{2}+\sum_{i=1}^{N}\alpha_{i}[1-(wx_{i}+b)y_{i}]
原問題:
m i n w ,    b m a x α i 0 L ( w , b , α ) \mathop{min}\limits_{w,\;b} \mathop{max}\limits_{\alpha_{i}\geq0}L_{(w,b,\alpha)}
對偶問題:
m a x α i 0 m i n w ,    b L ( w , b , α ) \mathop{max}\limits_{\alpha_{i}\geq0}\mathop{min}\limits_{w,\;b}L_{(w,b,\alpha)}
先對 L ( x , α , β ) L_{(x,\alpha,\beta)} 求極小值:
L w = 0 w = i = 1 N α i x i y i \frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i}
L b = 0 i = 1 N α i y i = 0 \frac{\partial L}{\partial b}=0\Rightarrow \sum_{i=1}^{N}\alpha_{i}y_{i}=0
將結果帶入對偶問題,可將其轉化爲下式:
m a x α i 0    1 2 ( i = 1 N α i x i y i ) 2 + i = 1 N α i [ 1 ( ( j = 1 N α j x j y j ) x i + b ) y i ] \mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}[1-((\sum_{j=1}^{N}\alpha_{j}x_{j}y_{j})x_{i}+b)y_{i}]
= m a x α i 0    1 2 ( i = 1 N α i x i y i ) 2 + i = 1 N α i [ 1 ( j = 1 N α j x j y j ) x i y i ] =\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}[1-(\sum_{j=1}^{N}\alpha_{j}x_{j}y_{j})x_{i}y_{i}]
= m a x α i 0    1 2 ( i = 1 N α i x i y i ) 2 + i = 1 N α i i = 1 N j = 1 N α i x i y i α j x j y j =\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}-\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}x_{i}y_{i}\alpha_{j}x_{j}y_{j}
= m a x α i 0    1 2 i = 1 N j = 1 N α i α j y i y j < x i x j > + i = 1 N α i =\mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\sum_{i=1}^{N}\alpha_{i}
約束條件爲:
i = 1 N α i y i = 0 α i 0 \sum_{i=1}^{N}\alpha_{i}y_{i}=0\quad \alpha_{i}\geq0
K K T KKT 條件爲:
α i [ 1 ( w x i + b ) y i = 0 \alpha_{i}[1-(wx_{i}+b)y_{i}=0
故原始問題被轉化爲:
{ m a x α i 0    1 2 i = 1 N j = 1 N α i α j y i y j < x i x j > + i = 1 N α i i = 1 N α i y i = 0 α i 0 α i [ 1 ( w x i + b ) y i = 0 \begin{cases} \mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\mathop{\sum}\limits_{i=1}^{N}\mathop{\sum}\limits_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\mathop{\sum}\limits_{i=1}^{N}\alpha_{i} \\ \mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}=0\quad \alpha_{i}\geq0 \\ \alpha_{i}[1-(wx_{i}+b)y_{i}=0 \end{cases}

4、SMO算法(序列最小優化算法)

優化此問題時採用SMO算法。
假設此問題中只有 α 1 \alpha_{1} α 10 \alpha_{10} ,則SMO算法的步驟如下。
1)先固定 α 3 \alpha_{3} α 10 \alpha_{10} ,則最優化函數變爲:
m a x α i 0    1 2 i = 1 2 j = 1 2 α i α j y i y j < x i x j > + i = 1 2 α i \mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\mathop{\sum}\limits_{i=1}^{2}\mathop{\sum}\limits_{j=1}^{2}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\mathop{\sum}\limits_{i=1}^{2}\alpha_{i}
約束條件變爲:
α 1 y 1 + α 2 y 2 = i = 3 10 α i y i    爲一常數 \alpha_{1}y_{1}+\alpha_{2}y_{2}=-\sum_{i=3}^{10}\alpha_{i}y_{i}\text{\;爲一常數}
則此優化問題變成了一個二維變量( α 1 α 2 \alpha_{1},\alpha_{2} )的優化問題,使原來的十維優化問題大大簡化。
這時,可以先算出最優的 α 1 \alpha_{1} α 2 \alpha_{2}
2)固定 α 1 \alpha_{1} α 4 \alpha_{4} α 10 \alpha_{10} ,重複以上操作並代入最優的 α 1 \alpha_{1} ,得到最優的 α 2 \alpha_{2} α 3 \alpha_{3}
3)固定 α 1 \alpha_{1} α 2 \alpha_{2} α 5 \alpha_{5} α 10 \alpha_{10} ,重複以上操作並代入最優的 α 1 \alpha_{1} α 2 \alpha_{2} ,得到最優的 α 3 \alpha_{3} α 4 \alpha_{4}
……
4)得到所有的最優 α \alpha ,將其代入 w = i = 1 10 α i x i y i w=\mathop{\sum}\limits_{i=1}^{10}\alpha_{i}x_{i}y_{i} ,得到最優的 w w 值。
5)若得到的 α i = 0 \alpha_{i}=0 ,則表示第 i i 個約束條件不起作用;若得到的 α i 0 \alpha_{i}\ne0 ,則它對應的 x i x_{i} y i y_{i} 就是支持向量。
6)通過 y = ( i = 1 N α i x i y i ) T x = i = 1 N α i y i x i T x    y=(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{T}x=\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}^{T}x\; 得到某樣本點對應的標籤。

5、線性不可分核函數

對於一些線性不可分的樣本,如下圖(左),不能找出一條直線來分類樣本。此時需要做空間的變換。
設原空間爲 χ R n , x = ( x ( 1 ) , x ( 2 ) ) T χ \chi \subset R^{n},x=(x^{(1)},x^{(2)})^{T} \in \chi ,新空間爲 Z R 2 , z = ( z ( 1 ) , z ( 2 ) ) T Z Z\subset R^{2},z=(z^{(1)},z^{(2)})^{T} \in Z ,定義從原空間到新空間的變換(映射):
z = ϕ ( x ) = ( ( x ( 1 ) ) 2 , ( x ( 2 ) ) 2 ) T z=\phi_{(x)}=((x^{(1)})^{2},(x^{(2)})^{2})^{T}
經過變換 z = ϕ ( x ) z=\phi_{(x)} ,原空間 χ R n \chi \subset R^{n} 變換爲新空間 Z R 2 Z\subset R^{2} ,原空間中的點相應地變換爲新空間中的點,原空間中的橢圓
w 1 ( x ( 1 ) ) 2 + w 2 ( x ( 2 ) ) 2 + b = 0 w_{1}(x^{(1)})^{2}+w_{2}(x^{(2)})^{2}+b=0
變換爲新空間中的直線
w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_{1}z^{(1)}+w_{2}z^{(2)}+b=0
即由下圖中的左圖變爲右圖。
在這裏插入圖片描述實際上我們並不需要知道經過空間變換後的 z 1 z_{1} z 2 z_{2} 的具體值,因爲由 y = ( i = 1 N α i x i y i ) T x = i = 1 N α i y i x i T x    y=(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{T}x=\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}^{T}x\; 知,我們只需要知道 x i x_{i} x x 的點積即可。
常用的空間變換有:
1)多項式核函數:
K ( x , z ) = ( x z + 1 ) p K_{(x,z)}=(x\cdot z+1)^{p}
對應的支持向量機是一個 p p 次多項式的分類器。此時,分類決策函數變成:
f ( x ) = s i g n ( i = 1 N α i y i ( x i x + 1 ) p + b ) f_{(x)}=sign(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}(x_{i}\cdot x+1)^{p}+b)
2)高斯核函數:
K ( x , z ) = e x z 2 2 σ 2 K_{(x,z)}=e^{-\frac{||x-z||^{2}}{2\sigma^{2}}}
對應的支持向量機是高斯徑向基函數分類器。此時,分類決策函數變成:
f ( x ) = s i g n ( i = 1 N α i y i e x i x 2 2 σ 2 + b ) f_{(x)}=sign(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}e^{-\frac{||x_{i}-x||^{2}}{2\sigma^{2}}}+b)