1. 程式人生 > >機器學習 --- 線性支援向量機

機器學習 --- 線性支援向量機

支援向量機是一種二分類模型,目的是尋找一個超平面對樣本進行劃分,其基本模型定義為特徵空間上的間隔最大的線性分類器。

一、線性支援向量機的直觀理解

給定訓練樣本集 D=\{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) \} , y_{i} =\{-1, +1 \} ,模型旨在能基於訓練集在樣本空間中找到一個合適的劃分超平面。

在下圖的二維平面中,希望有一個超平面即一條線可以將正負樣本很好分開:

由上圖直觀的感受,可以將樣本分開的劃分超平面可能會有很多,但一般會選擇中間那條黑色加粗的線。畢竟訓練集從某種程度上來說只是近似於樣本分佈,因此更希望能找到一個劃分超平面對分類結果具有很好的魯棒性,即具有對訓練集中沒有包含的某些樣本具有很好的泛化效果。而中間的這條線對分類的結果有著更好的“容忍性”

 

二、線性超平面

在樣本空間中,劃分超平面定義成:

w^{T}x+b=0

根據線性代數的知識,引數 w 決定了超平面的方向,又被稱作法向量,引數 b 決定了超平面與遠點之間的距離。這與邏輯迴歸中假設函式十分的相像。不同之處在於,邏輯迴歸中通過啟用函式將函式值對映到 (0,1) 區間上。但實質上決定分類結果的還是引數 w , b

類似地,假設超平面 (w,b) 能將訓練樣本正確分類,則滿足:

\left\{ \begin{aligned} & w^{T}x_{i}+b \geq +1 & y_{i}=+1 \\ & w^{T}x_{i}+b\leq -1 & y_{i}=-1 \\ \end{aligned} \right.

 

由之前的邏輯迴歸可以知道,當點能滿足:

\left\{ \begin{aligned} & w^{T}x_{i}+b > 0 & y_{i}=+1 \\ & w^{T}x_{i}+b < 0 & y_{i}=-1 \\ \end{aligned} \right.

也能分類樣本,但這種情況下當 (w,b) 同時放大或縮小,結果不受影響。超平面還是那個超平面,即多個滿足一定規則的 (w,b) ,其可能對應同一個超平面。

 

 

三、支援向量

上圖中,距離超平面最近的幾個訓練樣本點使得下式成立

y_{i}(w^{T}x_{i}+b)=1 \qquad \qquad (1)

 

則這些點又被稱作支援向量,兩個異類支援向量到超平面的距離 \gamma 稱作間隔

由高中數學,這個間隔等於兩個異類支援向量的差在 w 上的投影。因此:

\gamma=\frac{(\overrightarrow{x_{+}}-\overrightarrow{x_{-}})\overrightarrow w^{T}}{\vert \vert w\vert\vert} \qquad \qquad(2)

聯立(1)(2)式,得到:

\gamma=\frac{2}{\left| \left| w \right| \right|}

整個問題現在歸類到最大間隔 \gamma

 ,最小化 \frac{1}{\gamma} ,由此列出約束方程:

\min \limits_{w,b} \ \frac{1}{2} \left| \left| w \right| \right| \qquad\qquad\qquad\qquad\qquad(3)

s.t \quad y_{i}(w^{T}x_{i}+b)\geq1

這就是支援向量機的基本型式。

 

四、求解向量機基本型式

問題轉化成如何求解(3)式,由於這是一個凸二次規劃問題,我們使用拉格朗日乘子法將問題轉化成對偶問題(拉格朗日原理請參照拉格朗日乘子法和KTT條件)。對每個約束條件新增拉格朗日乘子 \alpha_{i}\geq0 ,去掉約束條件,目標函式寫成:

L(w,b,\alpha)=\frac{1}{2}\left| \left| x \right| \right|^{2}+\sum_{i=1}^{m}{\alpha_{i}(1-y_{i}(w^{T}x_{i}+b))} \qquad \qquad (4)

然後固定 \alpha ,如果要讓 L 關於 w,b 最小化,對 w,b 分別求偏導:

\frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{m}{\alpha_{i}y_{i}x_{i}} \qquad\qquad\qquad(5)

\frac{\partial L}{\partial b}=0\Rightarrow \sum_{i=1}^{m}{\alpha_{i}y_{i}}=0 \qquad\qquad\qquad(6)

將(5)(6)代入(4)中,得到對偶式

\max \limits_{\alpha}  \ \sum_{i=1}^{m}{\alpha_{i}}-\frac{1}{2}\sum_{i=1}^{m}{\sum_{j=1}^{m}{\alpha_{i}\alpha_{j}y_{i}y_{j}x^{T}_{i}x_{j}}} \qquad \qquad (7)

s.t \ \ \ \ \sum_{i=1}^{m}{a_{i}y_{i}}=0 \ \ \ \ \ \ \ \ \qquad \qquad(8)

\ \quad \ \ \ \  \ a_{i}\geq0

 

求解上式用到了SMO演算法:

演算法思路是首先固定 a_{i} 之外的所有引數,再求 a_{i} 的極值。約束項 \sum_{i=1}^{m}{a_{i}y_{i}}=0 保證了a_{i}能通過其他的變數匯出。於是SMO演算法每次選擇兩個變數 a_{i},a_{j} ,固定其他引數,迭代至收斂。

 

主要的步驟是:

  • 選取一對需要更新的變數 a_{i},a_{j}
  • 固定 a_{i},a_{j} 以外的引數,求解(7)式獲得更新後的 a_{i},a_{j}

 

求解過程中,在僅考慮 a_{i},a_{j} 的情況下,約束條件(8)可以重寫為:

\alpha_{i}y_{i}+\alpha_{j}y_{j}+\sum_{k\ne i,j}^{}{a_{k}y_{k}}=0 \qquad a_{i}\geq 0,a_{j}\geq 0 \ \ \ \ \ \ \ \ \  \ \ (9)

代入到(7)式中,消去 \alpha_{j} ,得到一個關於 \alpha_{i} 的單變數二次規劃問題。

求出 \alpha 的值後,由(5)式求解引數 w :

w^{*}=\sum_{i=1}^{m}{\alpha_{i}y_{i}x_{i}}

這裡的 w^{*} 指得是極值情況下的 w 值,對應於邊界的支援向量,再求引數 b :

y(w^{T}x+b)=1

即:

\left\{ \begin{aligned} & \max \limits_{y_{i}=-1}w^{T}x_{i}+b=-1 \\ & \min \limits_{y_{i}=1}w^{T}x_{i}+b=1  \\ \end{aligned} \right.

那麼極值情況下的 b^{*} :

b^{*}=\frac{1}{2}[\max \limits_{y_{i}=-1}w^{*T}x_{i}+\min \limits_{y_{i}=1}w^{*T}x_{i}]

成功求解引數 w,b 後,劃分超平面也就確立下來。

 

1.支援向量機通俗導論(理解SVM的三層境界) - Mac Track - CSDN部落格

2.拉格朗日對偶問題(Lagrange duality)

3.深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT條件

4.周志華. 機器學習[M]. 清華大學出版社, 2016