1. 程式人生 > >【機器學習演算法推導】支援向量機

【機器學習演算法推導】支援向量機

線性可分

  在二維平面中,正樣本和負樣本可以由一條直線完全隔開。假設存在直線 y = ω 1 x + b

y=\omega_1 x+b 使得平面上 ω 1 x + b 0
\omega_1 x+b\ge 0
處完全是正樣本, ω 1 x + b <
0 \omega_1 x+b<0
完全是負樣本,那麼這條直線就是一個超平面,它將樣本完全分開,並且這樣的樣本被稱為線性可分

超平面

  超平面是推廣到n維空間後的概念,在一維空間下,超平面就是一個點;在二維空間下,超平面就是一條直線;在三維平面下,超平面就是一個平面;…推廣到n維情況,則統稱為超平面

支援向量機

  在二維平面上,對於一組線性可分的資料,往往可以找到很多條直線作為超平面。支援向量機可以在這若干條直線中,找出最合適的一條直線作為決策邊界。如何判斷直線足夠合適呢?對於一個決策邊界,我們希望他能夠具有較好的泛化能力。假如正樣本均勻分佈在y=0的直線上,負樣本均勻分佈在存在於y=9的直線上。假設我們取y=1,y=5,y=8作為超平面,從直覺上來講,y=1,y=8兩條直線都離一組樣本過近,離另外一組樣本過遠,因此這兩條直線都不合適。而y=5作為y=0和y=9的垂線,對於正樣本和負樣本都留有一定的餘地,這使得模型的泛化能力變強。當出現一些噪聲,比如y=2上出現了正樣本,y=7上出現了負樣本的情況,y=5都能夠將其歸為正確的分類。當然,並不是所有的樣本都如我們期望的那樣線性可分。
  總的來說,支援向量機(support vector machines)可以分為以下三種:

  1. 當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分SVM。
  2. 當訓練樣本近似線性可分時,通過軟間隔最大化,學習一個線性SVM。
  3. 當訓練樣本線性不可分時,通過核技巧和軟間隔最大化,學習一個非線性支援向量機。

演算法推導

幾何間隔

  在超平面確定的情況下, ω x + b |\omega x+b| 表示點到超平面的距離,而函式最終預測輸出的y(1和-1)與 ω x + b \omega x +b 符號一致,因此可用 y ( ω x + b ) y(\omega x +b) 來表示分類預測的準確程度。定義所有樣本點最小的 y ( ω x + b ) y(\omega x +b) 作為函式間隔,
  根據高中的知識,我們知道點到直線的距離公式為 d = a x 0 + b y 0 + c a 2 + b 2 d=|\frac{ax_0+by_0+c}{\sqrt{a^2+b^2}}| ,點到平面的距離公式為 d = A x 0 + B y 0 + C z 0 + D A 2 + B 2 + C 2 d=|\frac{Ax_0+By_0+Cz_0+D}{\sqrt{A^2+B^2+C^2}}| ,如果用向量表示,設 ω = ( a , b ) \omega = (a,b) , f ( x ) = ω T x + c f(x)=\omega ^Tx+c ,那麼這個距離正是 f ( x ) ω \frac{|f(x)|}{||\omega||}

支援向量

  滿足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 的樣本點稱之為支援向量。對於其他不是支援向量的點,顯然有 y ( ω T x + b ) > 1 y(\omega ^Tx+b)>1
  令 x + \vec x_+ x \vec x_- 表示兩個正負支援向量,滿足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 ,推出 { ω T x + = 1 b ω T x = 1 b \begin{cases}\omega ^Tx_+=1-b \\ \omega ^Tx_-=-1-b \end{cases} 。對於一正一負兩個支援向量的間隔等於兩個支援向量的差在 ω \omega 上的投影,即
γ = x + ω T ω x ω T ω = x + ω T x ω T ω = 1 b + ( 1 + b ) ω = 2 ω \gamma=\frac{\vec x_+·\vec \omega ^T}{||\omega||}-\frac{\vec x_-·\vec \omega ^T}{||\omega||}=\frac{\vec x_+·\vec \omega ^T-\vec x_-·\vec \omega ^T}{||\omega||}=\frac{1-b+(1+b)}{||\omega||}=\frac{2}{||\omega||}