【數據科學系統學習】機器學習算法 # 西瓜書學習記錄 [8] 支持向量機(二)

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

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

由於本章內容較多,分爲兩篇來敘述。本篇所包含內容爲軟間隔與正則化和核函數。關於間隔與支持向量和對偶問題可點擊支持向量機(一)查看。

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


軟間隔與正則化

線性可分問題的支持向量機學習方法,對線性不可分訓練數據集是不適用的,因爲這時上述方法的不等式約束並不能都成立。一個想法是將它擴展到線性不可分問題,這時就需要修改硬間隔最大化,使其成爲軟間隔最大化。

爲此,引入軟間隔 (soft margin) 的概念。直觀的如下圖所示:

clipboard.png

具體來說,上一篇介紹的支持向量機形式是要求所有都滿足約束條件,即所有樣本都必須劃分正確,這稱爲硬間隔 (hard margin),而軟間隔則是允許某些樣本不滿足約束 $y_i(w^T·\phi(x)+b)\ge1$。當然,在最大化間隔的同時,不滿足約束的樣本應儘可能少。

若數據線性不可分,則增加鬆弛因子 $\xi \ge0$,使函數間隔加上鬆弛量大於等於 1.這樣,約束條件變爲

$$ y_i(w·x_i+b)\ge1-\xi_i $$

目標函數

$$ \min \limits_{w,b} \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i $$

這裏,$C>0$ 稱爲懲罰參數,一般由應用問題決定,$C$ 值大時對誤分類的懲罰增大,$C$ 值小時對誤分類的懲罰減小。上式所示的最小化目標函數包含兩層含義:使 $\frac{1}{2}||w||^2$ 儘量小即間隔儘量大,同時使誤分類點的個數儘量小,$C$ 是調和二者的係數。

線性支持向量機的目標函數

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

帶鬆弛因子的 SVM 拉格朗日函數

拉格朗日函數

$$ L(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i - \sum_{i=1}^{m} \alpha_i(y_i(w·x_i+b)-1+\xi_i)-\sum_{i=1}^{m}\mu_i\xi_i $$

對 $w,b,\xi$ 求偏導

$$ \frac{\partial L}{\partial w} =0 \quad \Rightarrow \quad w=\sum_{i=1}^{m}\alpha_iy_ix_i \\ \frac{\partial L}{\partial b} =0 \quad \Rightarrow \quad 0=\sum_{i=1}^{m}\alpha_iy_i \\ \frac{\partial L}{\partial \xi_i} =0 \quad \Rightarrow \quad C-\alpha_i-\mu_i=0 $$

將以上三式代入目標函數,得

$$ \min\limits_{w,b,\xi}L(w,b,\xi,\alpha,\mu)=- \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_ix_j)+\sum_{i=1}^{m}\alpha_i $$

對上式求 $\alpha$ 極大,得

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

最終的目標函數
整理上述式子得到對偶問題:

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

由於引入了鬆弛因子,所以引入了超參數 $C$,超參數 $C$ 的指定,確定了 $\alpha$ 值的上限,因此權值 $w$ 的取值範圍也就確定了。

而這裏的 $0\leq \alpha \leq C$ 是根據軟間隔支持向量機的 KKT 條件進一步推出的,這裏不進行詳細敘述。

線性支持向量機學習算法

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

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

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

計算

$$ w^*=\sum_{i=1}^{m}\alpha_i^*y_ix_i \\ b^*=\frac{\max\limits _{i:y=-1}w^*x_i + \min\limits _{i:y=1}w^*x_i}{2} $$

其中,在計算 $b^*$ 時,需要選擇 $\alpha^*$ 的一個分量 $\alpha_i^*$ 適合條件 $0\leq \alpha_j^* \leq C$,來計算

$$ b^*=y_j-\sum_{i=1}^{m}y_i\alpha_i^*(x_i·x_j) $$

在實踐中,往往取支持向量的所有值取平均作爲 $b^*$。

最後,求得分離超平面

$$ w^*·x+b^*=0 $$

分類決策函數

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


以上所敘述的線性支持向量機,其學習策略爲軟間隔最大化,學習算法爲凸二次規劃。對其常見的三種損失函數進行分析,如下圖:

clipboard.png

hinge 損失:$l_{hinge}(z)=max(0,1-z)$
指數損失:$l_{exp}(z)=exp(-z)$
對數損失:$l_{log}(z)=log(1+exp(-z))$


核函數

clipboard.png

前面我們假設樣本是線性可分的,但對於上圖所示的情形來說,它們就不是線性可分的。對於這樣的問題,我們可以使用核函數 (kernel function),將原始輸入空間映射到新的特徵空間,從而使得原本線性不可分的樣本可能在覈空間可分。如下面的示意圖所示:

clipboard.png

常用核函數

  • 多項式核函數:$ k(x_1,x_2)=(x_1·x_2+c)^d $
  • 高斯核 RBF 核函數:$ k(x_1,x_2)=exp(-\gamma·||x_1-x_2||^2) $
  • sigmoid 核函數:$ k(x_1,x_2)=tanh(x_1·x_2+c) $

在實際應用中,往往依賴先驗領域知識或交叉驗證等方案纔能有效的選擇核函數,如沒有更多的先驗信息,則可使用高斯核函數。

高斯核

$$ exp(-\frac{||x_i-x_j||^2}{2\sigma^2}) $$

高斯核是無窮維的,可由泰勒展開進行推導。

對應的支持向量機是高斯徑向基函數 (radial basis function) 分類器。

高斯核的 $\gamma$ 值

$$ kernel(x_i, x_j)=exp[-\frac{||x_i-x_j||^2}{2\sigma^2}]=exp[-\gamma·||x_i-x_j||^2] $$

clipboard.png

如上圖所示,$\gamma$ 越大,越高瘦,則曲線沿着樣本點很快衰減;$\gamma$ 越小,越矮胖。在這裏當效果很好時,要注意是否會出現過擬合問題。

序列最小最優化算法

關於 SVM 中係數的求解,人們一般使用序列最小最優化 (sequential minimal optimization, SMO) 算法,這種算法 1998 年由 Platt 提出。這裏主要介紹其思想,其簡單的實現步驟可點擊支持向量機實踐查看。

SMO 算法是一種啓發式算法,其基本思路是:如果所有變量的解都滿足最優化問題的 KKT 條件,那麼這個最優化問題的解就得到了,因爲 KKT 條件是該最優化問題的充分必要條件。否則,因爲有多個拉格朗日乘子,每次只選擇其中的兩個乘子做優化,其他因子認爲是常數。即將 N 個解的問題,轉換成兩個變量的求解問題,並且目標函數是凸的,對子問題進行解析求解,直到所有變量滿足 KKT 條件爲止。

整個 SMO 算法包括兩個部分:求解兩個變量二次規劃的解析方法和選擇變量的啓發式方法。


以上,就是關於支持向量機這一章的學習內容,它涉及到的內容較多,本文僅簡單的介紹了較爲重要和基礎的部分。

不足之處,歡迎指正。


參考鏈接:
SCIKIT-LEARN : SUPPORT VECTOR MACHINES (SVM) II

$$$$

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章