1. 程式人生 > >SVM的原理及推導

SVM的原理及推導

SVM的原理及推導

我們直接用數學公式來描述我們要解決的問題。假設我有一個數據集 D \mathcal{D} ,總共有m個樣本 { x i ,

y i } , i = 1 , . .
. , n \{x_i, y_i\}, i=1, ..., n 。其中。其中 x i
R d x_i \in \mathbb{R}^d
是維的向量,是二類分類問題的標籤,是d維的向量,y是二類分類問題的標籤, y i { 1 , + 1 } y_i \in \{-1, +1\} 。我們首先假設我們的資料是完美的,即,在維度的平面上,我們的資料是線性可分的,那麼我們就可以畫一條直線。我們首先假設我們的資料是完美的,即,在維度d的平面上,我們的資料是線性可分的,那麼我們就可以畫一條直線 f ( x ) = w T x + b f(x)=w^Tx+b 使得我們所有的不同類別的樣本區分開來,即對於所有使得我們所有的不同類別的樣本區分開來,即對於所有 y i = 1 y_i=-1 的樣本的樣本 i i w T x + b 0 w^Tx+b \leq 0 ,反之對於所有,反之對於所有 y i = + 1 y_i = +1 的樣本有的樣本有 w T x + b 0 w^Tx+b \geq 0

但是,如果我們只是單純的規定 w T x + b = 0 w^Tx+b=0 作為超平面來區分正負樣本,這樣的超平面有很多,任何一個超平面符合上述條件都可以作為解,而這對分類的泛化性並不友好。也就是說,當超平面實際上選取很差時,對於測試資料,一點微小的噪聲就會導致它的錯分。所以SVM定義了另外兩個超平面(支援超平面 Supporting Hyperplane),都與 w T x + b = 0 w^Tx+b=0 平行,到超平面的距離(邊際 Margin)分別為 d d_- d + d_+ ,並且保持 d = d + d_-=d_+ 。我們將這兩個超平面用公式表示:
w T x = b σ w T x = b + σ w^Tx = b-\sigma \\ w^Tx = b+\sigma
我們注意到,如果將公式的左右兩邊同時乘以一個係數,公式仍然成立。而且這個公式存在著過引數化。因此SVM規定了這個 σ = 1 \sigma = 1 。那麼邊際大小 γ = d + d + \gamma = d_-+d_+ 就等於:
γ = 2 w \gamma = \frac{2}{\|w\|}

至此我們已經決定了我們所要得到的優化目標,即找到一個超平面 w T x + b = 0 w^Tx+b=0 使得它存在兩個與之平行、與之距離為 1 1 並分佈兩側的超平面,能夠完美分開所有的訓練資料,使得正樣本在 w T x + b 1 w^Tx+b \geq 1 ,負樣本 w T x + b 1 w^Tx+b \leq -1 。我們把問題寫成凸優化問題的形式:(這裡強調一點,源自於Convex Optimization那門課中,很多人把優化公式中的max和maximize,min和minimize混為一談,實際上是不正確的,min/max返回的是一個值,即最小/大值,只有maximize/minimize代表著優化目標函式。)
m a x i m i z e    2 w s . t .    y i ( w T x + b ) 1 0 ,   i = 1 , . . . , m \begin{aligned} \mathop{maximize}&~~\frac{2}{\|w\|}\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned}
由於 2 w \frac{2}{\|w\|} 是個concave的函式,我們便可以通過倒數的方式轉成convex的標準形式,這裡加平方應該是要為了是讓曲線保證平滑來保證處處可導(這裡不是很確定,如果說的不對請大家指出謝謝),即:
m i n i m i z e    1 2 w 2 s . t .    y i ( w T x + b ) 1 0 ,   i = 1 , . . . , m \begin{aligned} minimize&~~\frac{1}{2}\|w\|^2\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned}
對於剛好落在支援超平面上的點,我們就將他們成為支援向量(Support Vector)
這個問題,可以通過**拉格朗日法(Lagrangian)**轉換成對偶問題求解。

首先,我們將約束條件乘以一個 λ i \lambda_i 加入到優化函式 f 0 ( x ) f_0(x)