1. 程式人生 > >【資料科學系統學習】機器學習演算法 # 西瓜書學習記錄 [7] 支援向量機(一)

【資料科學系統學習】機器學習演算法 # 西瓜書學習記錄 [7] 支援向量機(一)

這兩篇內容為西瓜書第 6 章支援向量機 6.16.26.46.3 的內容:

  • 6.1 間隔與支援向量
  • 6.2 對偶問題
  • 6.4 軟間隔與正則化
  • 6.3 核函式

由於本章內容較多,分為兩篇來敘述。本篇所包含內容為間隔與支援向量和對偶問題。

如移動端無法正常顯示文中的公式,右上角跳至網頁即可正常閱讀。

支援向量機 (support vector machines, SVM) 是一種二類分類模型。它的基本模型是定義在特徵空間上的間隔最大的線性分類器,支援向量機還包括核技巧,這使它成為實質上的非線性分類器。

支援向量機的學習策略是間隔最大化,可形式化為一個求解凸二次規劃 (convex quadratic programming) 的問題,也等價於正則化的合葉損失函式

(hinge loss function) 的最小化問題。支援向量機的學習演算法是求解凸二次規劃的最優化演算法。

支援向量機的學習方法包含構建由簡單到複雜的模型:線性可分支援向量機線性支援向量機非線性支援向量機

  • 當訓練資料線性可分時,通過硬間隔最大化,學習一個線性的分類器,即線性可分支援向量機,又稱為硬間隔支援向量機;
  • 當訓練資料近似線性可分時,通過軟間隔最大化,也學習一個線性的分類器,即線性支援向量機,又稱為軟間隔支援向量機;
  • 當訓練資料線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支援向量機。

下面,我們將從這三部分來敘述開頭列出的章節:

  1. 線性可分支援向量機
  2. 線性支援向量機
  3. 非線性支援向量機

間隔與支援向量 & 對偶問題

線性可分支援向量機

給定線性可分訓練資料集,通過間隔最大化得到的分離超平面為:

$$ w^T·\phi(x)+b=0 $$

相應的分類決策函式

$$ f(x)=sign(w^T·\phi(x)+b) $$

該決策函式稱為線性可分支援向量機。

其中,$\phi(x)$ 是某個確定的特徵空間轉換函式,它的作用是將 $x$ 對映到(更高的)維度。最簡單最直接的就是 $\phi(x)=x$。

而求解分離超平面問題可以等價為求解相應的凸二次規劃問題。

那麼,這裡的分離超平面是指什麼呢?我們來看下圖:

clipboard.png

當給定訓練樣本集 $D={(x_1, y_1), (x_2, y_2),···,(x_m, y_m)}$,$y_i\in{-1, +1}$時,分類學習最基本的想法就是基於訓練集 $D$ 在樣本空間中找到一個分離超平面,將不同類別的樣本分開。但能將訓練樣本分開的分離超平面可能有很多,我們該去找哪一個呢?此時,就需要我們去尋找最大間隔分離超平面。

下面,我們通過推導目標函式的過程,來進一步解釋這裡的“間隔”。

推導目標函式

根據題設

$$ w^T·\phi(x)+b=0 $$

$$ y(x_i)>0\Leftrightarrow y_i=+1 \\ y(x_i)<0\Leftrightarrow y_i=-1 $$

可推出

$$ y_i·y(x_i)>0 $$

從而,由點到直線的距離公式可知,樣本空間中任意點 $x$ 到超平面 $(w, b)$ 的距離可寫為:

$$ d[s(w, b)]=\left( \frac{y^{(i)}(w_jx^{(i)}+b_j)}{||w_j||} \right) $$

這裡 $i$ 表示第 $i$ 個樣本, $j$ 表示第 $j$ 號直線。

則目標函式為

$$ \mathop{\arg\max}_{w,b} \{\frac{1}{||w||}\min \limits_{i}[y_i(w^T·\phi(x_i)+b)] \} $$

函式間隔和幾何間隔

現在我們來解釋上式中的 $y_i(w^T·\phi(x_i)+b)$。

一般來說,一個點距離分離超平面的遠近可以表示分類預測的確信程度。下面我們給出函式間隔幾何間隔的定義(參考自李航的《統計學習方法》)。

定義 7.2 (函式間隔)對於給定的訓練訓練資料集 $D$ 和超平面 $(w,b)$,定義超平面 $(w,b)$ 關於樣本點 $(x_i, y_i)$ 的函式間隔為

$$ \hat{r_i}=y_i(w·x_i+b) $$

定義超平面 $(w,b)$ 關於訓練資料集 $D$ 的函式間隔為超平面 $(w,b)$ 關於 $D$ 中所有樣本點 $(x_i, y_i)$ 的函式間隔最小值,即

$$ \hat{r}=\min \limits_{i=1,···,m}\hat{r_i} $$

定義 7.3 (幾何間隔)對於給定的訓練訓練資料集 $D$ 和超平面 $(w,b)$,定義超平面 $(w,b)$ 關於樣本點 $(x_i, y_i)$ 的幾何間隔為

$$ r_i=y_i\left(\frac{w}{||w||}·x_i+\frac{b}{||w||} \right) $$

定義超平面 $(w,b)$ 關於訓練資料集 $D$ 的函式間隔為超平面 $(w,b)$ 關於 $D$ 中所有樣本點 $(x_i, y_i)$ 的幾何間隔最小值,即

$$ r=\min \limits_{i=1,···,m}r_i $$

其中,$||w||$ 為 $w$ 的 $L_2$ 範數。函式間隔可以表示分類預測的正確性及準確度,但選擇分離超平面時,只有函式間隔還不夠,只要成比例的改變 $w$ 和 $b$,超平面並沒有改變,但函式間隔就會改變。因此對分離超平面的法向量 $w$ 加某些約束,如規範化,$||w||=1$,使得間隔是確定的,這時函式間隔成為幾何間隔。

又又分割平面 $y=w^T·\phi(x)+b$。因此,我們總可以通過等比縮放 $w$ 的方法,使得兩類點的函式值都滿足 $|y|\ge1$。就可以對目標函式做等價變化,下面我們來建立目標函式。

簡單來說,這裡的對目標函式做等價變化指調整直線係數(即 $w$ 的值),使得最近樣本點到直線距離在分子上的值等於 1。即 $min[y_i(w^T·\phi(x)+b)]=1$。

建立目標函式

約束條件:

$$ y_i(w^T·\phi(x)+b)\ge1 $$

原目標函式:

$$ \mathop{\arg\max}_{w,b} \{\frac{1}{||w||}\min \limits_{i}[y_i(w^T·\phi(x_i)+b)] \} $$

新目標函式:

$$ \mathop{\arg\max}_{w,b} \frac{1}{||w||} $$

$$ \max\limits_{w,b} \frac{1}{||w||} \\ s.t. \ y_i(w^T·\phi(x_i)+b)\ge1 \quad i=1,2,···,m $$

顯然,為了最大化間隔,僅需最大化 $||w||^{-1}$,這等價於最小化 $||w||^2$。於是,上式可重寫為

$$ \min \limits_{w,b} \frac{1}{2}||w||^2 \\ s.t. \ y_i(w^T·\phi(x_i)+b)\ge1 \quad i=1,2,···,m $$

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

支援向量

如下圖所示,距離超平面最近的幾個訓練樣本點使式 $y_i(w^T·\phi(x_i)+b)\ge1$ 的等號成立,它們被稱為支援向量 (support vector),兩個異類支援向量到超平的距離之和為圖中的 $\gamma$,它被稱為間隔

clipboard.png

對偶問題

在介紹如何利用對偶問題求出引數 $w$ 和 $b$ 來得到最大間隔分離超平面所對應的模型之前,我們先來看一般優化問題的拉格朗日乘子法。

優化問題

一般優化問題的拉格朗日乘子法:

$$ minimize\quad f_0(x),\quad x\in R^n \\ subject to\quad f_i(x)\leq0, \quad i=1, ···, m \\ h_j(x)=0, \quad j=1, ···, p $$

拉格朗日函式:

$$ L(x, \lambda, v)=f_0(x)+\sum_{i=1}^{m}\lambda_if_i(x)+\sum_{j=1}^pv_jh_j(x) $$

拉格朗日對偶函式:

$$ g(\lambda,v)=infL(x, \lambda, v)=\inf \limits_{x\in D}(f_0(x)+\sum_{i=1}^{m}\lambda_if_i(x)+\sum_{i=1}^pv_ih_i(x) ) $$

若沒有下确界,定義:

$$ g(\lambda,v)=-\infty $$

根據定義,顯然有:對 $\forall \lambda >0$, $ \forall v$,若原優化問題有最優值 $p^*$,則有

$$ g(\lambda,v)<p^* $$

進一步,拉格朗日對偶函式為凹函式。

拉格朗日乘子法

下面我們對最終的目標函式使用拉格朗日乘子法來得到其對偶問題 (dual problem)。具體來說,對該式的每條約束新增拉格朗日乘子 $\alpha_i\ge0$,則該問題的拉格朗日函式可寫為

$$ L(w,b,\alpha)=\frac{1}{2}||w||^2 - \sum_{i=1}^{m} \alpha_i{y_i(w^T·\phi(x)+b)-1} $$

原問題是極小極大問題

$$ \min\limits _{w,b} \max\limits _\alpha L(w,b,\alpha) $$

原問題的對偶問題是極大極小問題

$$ \max\limits _\alpha \min\limits _{w,b} L(w,b,\alpha) $$

即先對 $w, b$ 求偏導,計算出 $w, b$ 回代後得到只剩 $\alpha$ 的式子。

將拉格朗日函式 $L(w,b,\alpha)$ 分別對 $w$,$b$ 求偏導,並令其為 0,則:

$$ \frac{\partial L}{\partial w} =0 \quad \Rightarrow \quad w=\sum_{i=1}^{m}\alpha_iy_i\phi(x_i) \\ \frac{\partial L}{\partial b} =0 \quad \Rightarrow \quad 0=\sum_{i=1}^{m}\alpha_iy_i $$

計算拉格朗日函式的對偶函式

$$ L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^{m} \alpha_i{y_i(w^T·\phi(x)+b)-1} \\ =\frac{1}{2}w^Tw-w^T\sum_{i=1}^{m} \alpha_iy_i\phi(x_i)-b\sum_{i=1}^{m}{\alpha_i}{y_i}+\sum_{i=1}^{m}\alpha_i \\ =\frac{1}{2}w^T\sum_{i=1}^{m}\alpha_iy_i\phi(x_i)-w^T\sum_{i=1}^{m}-b·0+\sum_{i=1}^{m}\alpha_i \\ =\sum_{i=1}^{m}\alpha_i-\frac{1}{2}(\sum_{i=1}^{m}\alpha_iy_i\phi(x_i))^T\sum_{i=1}^{m}\alpha_iy_i\phi(x_i) \\ =\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j) $$

$$ \alpha^*=\mathop{\arg\max}_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j) $$

再求 $\min \limits_{w,b}L(w,b,\alpha)$ 對 $\alpha$ 的極大。

$$ \max\limits_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j)) \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \quad \alpha_i\ge0, i=1,2,···,m $$

目標函式

整理上式新增負號,得到目標函式:

$$ \min\limits_{\alpha} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j))-\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \quad \alpha_i\ge0, i=1,2,···,m $$

上述過程需滿足 KKT (Karush-Kuhn-Tucker) 條件,即為了滿足對偶函式的最大值等於原始問題的最小值。具體的 KKT 條件,這裡不再詳細敘述。

線性可分支援向量機學習演算法

構造並求解約束最優化問題

$$ \min\limits_{\alpha} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j))-\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \quad \alpha_i\ge0, i=1,2,···,m $$

求得最優解 $\alpha^*$。

計算

$$ w^*=\sum_{i=1}^{m}\alpha_i^*y_i\phi(x_i) \\ b^*=y_i-\sum_{i=1}^{m}\alpha_i^*y_i\phi(x_i)\phi(x_i) $$

求得分離超平面

$$ w^*\phi(x)+b^*=0 $$

分類決策函式

$$ f(x)=sign(w^*\phi(x)+b^*) $$

最後,我們來看兩個例子,來更好的理解線性可分支援向量機學習演算法。

clipboard.pngclipboard.pngclipboard.png

不足之處,歡迎指正。

$$$$