1. 程式人生 > >支援向量機:SVM

支援向量機:SVM

  SVM 是一種監督式的機器學習演算法,可用於分類或迴歸問題。它使用一種稱為核函式的技術來變換資料,然後基於這種變換,演算法找到預測可能的兩種分類之間的最佳邊界。通俗來講,它是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,即支援向量機的學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。

1. 最大間隔分隔

  上圖中綠色和藍色分別表示不同的兩個類別,可以看出資料是線性可分,第二張圖中間的直線就是一個分類函式,它可以將兩類樣本完全分開。這種可以將資料集分隔開來的直線稱為分隔超平面。在上面給出的資料點都在二維平面上,所以此時分隔超平面就只是一條直線。但是,如果所給的資料集是三維的,那麼此時用來分隔資料的就是一個平面。顯而易見,更高維的情況可以依此類推。
  支援向量就是離分隔超平面最近的那些點。接下來要試著最大化支援向量到分隔面的距離,要找到這些支援向量。
  我們定義分隔超平面的表示式為 y

( x ) = w T x + b
{\text{y}}(x) = {w^T}x + b
,分類的結果為 y i = ± 1 {{\text{y}}_i} = \pm 1
(正例 l a b e l label 為1,負例 l a b e l label 為 -1)。如果資料點處於正方向(即正例)並且離分隔超平面很遠的位置時, w T x + b {{w^T}x+b} 會是一個很大的正數,同時 l a b e l ( w T x + b ) label*({w^T}x + b) 也會是一個很大的正數。而如果資料點處於負方向(負例)並且離分隔超平面很遠的位置時,此時由於類別標籤為-1,則 l a b e l ( w T x + b ) label*({w^T}x + b) 仍然是一個很大的正數。
  現在的目標就是找出分類器定義中的 w w b b 。為此,我們必須找到具有最小間隔的資料點,一旦找到具有最小間隔的資料點,我們就需要對該間隔最大化。這就可以寫作: arg max w , b { min n ( l a b e l ( w T x + b ) ) 1 w } \arg \mathop {\max }\limits_{w,b} \{ \mathop {\min }\limits_n (label*({w^T}x + b))*\frac{1}{{||w||}}\}
  注:
    1. l a b e l ( w T x + b ) label * ({w^T}x+b) 被稱為點到超平面的函式間隔
    2. l a b e l ( w T x + b ) ) 1 w label*({w^T}x + b))*\frac{1}{{||w||}} 為點到超平面的幾何間隔
    3. min n ( l a b e l ( w T x + b ) ) 1 w \mathop {\min }\limits_n (label*({w^T}x + b))*\frac{1}{{||w||}} 為支援向量,即上圖中紅色的點

  直接求解上述問題相當困難,但是如果我們令所有支援向量的 l a b e l ( w T x + b ) label*({w^T}x + b) 都為1,那麼就可以通過求 1 w \frac{1}{{||w||}} 的最大值來得到最終解,但是並不是所有點的 l a b e l ( w T x + b ) label*({w^T}x + b) 都為1,只有離超平面最近的點才為1,越遠的點值越大,所以這裡我們加個約束條件:如果 l a b e l ( w T x + b ) > = 1 label*({w^T}x + b)>=1 l a b e l ( w T x + b ) = 1 label*({w^T}x + b)=1 ,那麼到超平面最近的距離為 1 w \frac{1}{{||w||}} ,即最大的間隔分隔為 1 w \frac{1}{{||w||}}

2. 最優化求解
  上面我們已經分析出最大的間隔為 1 w \frac{1}{{||w||}} w ||w|| 的意思是 w w 的二範數,可以寫成 w . w \sqrt {w.w} ,所以 max ( 1 w ) < = > min ( 1 2 w 2 ) \max (\frac{1}{{||w||}}) <= > \min (\frac{1}{2}||w|{|^2})

  到這裡,最優化問題可以使用拉格朗日乘子法去解,使用了KKT條件的理論,這裡直接作出這個式子的拉格朗日目標函式: L ( w , b , a ) = 1 2 w 2 i = 1 n a i ( y i ( w x i + b ) 1 ) L(w,b,a) = \frac{1}{2}||w|{|^2} - \sum\limits_{i = 1}^n {{a_i}({y_i}({w}{x_i} + b) - 1)}