這兩篇內容爲西瓜書第 6 章支持向量機 6.1
,6.2
,6.4
,6.3
的內容:
- 6.1 間隔與支持向量
- 6.2 對偶問題
- 6.4 軟間隔與正則化
- 6.3 核函數
由於本章內容較多,分爲兩篇來敘述。本篇所包含內容爲軟間隔與正則化和核函數。關於間隔與支持向量和對偶問題可點擊支持向量機(一)查看。
如移動端無法正常顯示文中的公式,右上角跳至網頁即可正常閱讀。
軟間隔與正則化
線性可分問題的支持向量機學習方法,對線性不可分訓練數據集是不適用的,因爲這時上述方法的不等式約束並不能都成立。一個想法是將它擴展到線性不可分問題,這時就需要修改硬間隔最大化,使其成爲軟間隔最大化。
爲此,引入軟間隔 (soft margin) 的概念。直觀的如下圖所示:
具體來說,上一篇介紹的支持向量機形式是要求所有都滿足約束條件,即所有樣本都必須劃分正確,這稱爲硬間隔 (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^*) $$
以上所敘述的線性支持向量機,其學習策略爲軟間隔最大化,學習算法爲凸二次規劃。對其常見的三種損失函數進行分析,如下圖:
hinge 損失:$l_{hinge}(z)=max(0,1-z)$
指數損失:$l_{exp}(z)=exp(-z)$
對數損失:$l_{log}(z)=log(1+exp(-z))$
核函數
前面我們假設樣本是線性可分的,但對於上圖所示的情形來說,它們就不是線性可分的。對於這樣的問題,我們可以使用核函數 (kernel function),將原始輸入空間映射到新的特徵空間,從而使得原本線性不可分的樣本可能在覈空間可分。如下面的示意圖所示:
常用核函數
- 多項式核函數:$ 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] $$
如上圖所示,$\gamma$ 越大,越高瘦,則曲線沿着樣本點很快衰減;$\gamma$ 越小,越矮胖。在這裏當效果很好時,要注意是否會出現過擬合問題。
序列最小最優化算法
關於 SVM 中係數的求解,人們一般使用序列最小最優化 (sequential minimal optimization, SMO) 算法,這種算法 1998 年由 Platt 提出。這裏主要介紹其思想,其簡單的實現步驟可點擊支持向量機實踐查看。
SMO 算法是一種啓發式算法,其基本思路是:如果所有變量的解都滿足最優化問題的 KKT 條件,那麼這個最優化問題的解就得到了,因爲 KKT 條件是該最優化問題的充分必要條件。否則,因爲有多個拉格朗日乘子,每次只選擇其中的兩個乘子做優化,其他因子認爲是常數。即將 N 個解的問題,轉換成兩個變量的求解問題,並且目標函數是凸的,對子問題進行解析求解,直到所有變量滿足 KKT 條件爲止。
整個 SMO 算法包括兩個部分:求解兩個變量二次規劃的解析方法和選擇變量的啓發式方法。
以上,就是關於支持向量機這一章的學習內容,它涉及到的內容較多,本文僅簡單的介紹了較爲重要和基礎的部分。
不足之處,歡迎指正。
參考鏈接:
SCIKIT-LEARN : SUPPORT VECTOR MACHINES (SVM) II
$$$$