4. 支持向量機(SVM)原理


1. 感知機原理(Perceptron)

2. 感知機(Perceptron)基本形式和對偶形式實現

3. 支持向量機(SVM)拉格朗日對偶性(KKT)

4. 支持向量機(SVM)原理

5. 支持向量機(SVM)軟間隔

6. 支持向量機(SVM)核函數

1. 前言

在我沒有學習接觸機器學習之前,我就已經聽說了SVM這個機器學習的方法。SVM自它誕生以來就以優秀的分類性能牢牢占據了霸主地位。

2. SVM原理

支持向量機(Support Vector Machine, SVM)的基本模型是在特征空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SVM是用來解決二分類問題的有監督學習算法,在引入了核方法之后SVM也可以用來解決非線性問題。

2.1 感知機

回想我們之前的一篇文章感知機,感知機的原理是通過找到一條直線,能夠把數據分開。如果提升到高緯,就是找到一個超平面,把高緯數據分開。感知機的超平面可能有無窮多個,SVM可以理解為在這無窮多個里面找出最好的那個。

2.2 函數間隔與幾何間隔

  • 函數間隔
    函數間隔其實就是感知機的損失函數的表達形式,可以表示位

\[\gamma^{'} = y(w^Tx + b) \]

  • 幾何間隔
    幾何間隔才是點到超平面的真正距離,是每個點到超平面的距離,也就是函數間隔除上法向量。

\[\gamma = \frac{y(w^Tx + b)}{||w||_2} = \frac{\gamma^{'}}{||w||_2} \]

3. SVM模型

先直接看下SVM的模型圖:

image

如上圖所示,分類超平面\(w^Tx+b=0\)不僅可以把所有樣本分開,還和最近的樣本點(支持向量)保持一定的函數距離(我們認為這個函數距離為1),那么這樣的分類超平面是比感知機的分類超平面更好的。可以證明,這樣的超平面只有一個。

4. SVM的損失函數

SVM的模型是讓所有點到超平面的距離大於一定的距離,也就是所有的分類點要在各自類別的支持向量兩邊。用數學式子表示為:

\[max \;\; \gamma = \frac{y(w^Tx + b)}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) = \gamma^{'(i)} \geq \gamma^{'} (i =1,2,...m) \]

一般我們都取函數間隔\(\gamma^{'}=1\),這樣我們的優化函數定義為:

\[max \;\; \frac{1}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) \geq 1 (i =1,2,...m) \]

上式等價於:

\[min \;\; \frac{1}{2}||w||_2^2 \;\; s.t \;\; y_i(w^Tx_i + b) \geq 1 (i =1,2,...m) \]

4.1 拉格朗日對偶化

由於目標函數\(\frac{1}{2}||w||_2^2\)是凸函數,同時約束條件不等式是仿射的,根據凸優化理論,我們可以通過拉格朗日函數將我們的優化目標轉化為無約束的優化函數,

\[L(w,b,\alpha) = \frac{1}{2}||w||_2^2 -\sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1] \; \; s.t. \; \alpha_i \geq 0 \]

我們的這個優化函數滿足KKT條件,也就是說,我們可以通過拉格朗日對偶將我們的優化問題轉化為等價的對偶問題來求解:

\[\underbrace{min}_{w,b}\; \underbrace{max}_{\alpha_i \geq 0} L(w,b,\alpha) \]

從先求最大值再求最小值轉化為先求最小值再求最大值,如下

\[\underbrace{max}_{\alpha_i \geq 0} \;\underbrace{min}_{w,b}\; L(w,b,\alpha) \]

然后通過偏導數對\(w,b\)求極值帶入公式得到如下公式

\[\underbrace{min}_{\alpha} \frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) - \sum\limits_{i=1}^{m} \alpha_i \]

\[s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[\alpha_i \geq 0 \; i=1,2,...m \]

只要我們可以求出上式極小化時對應的\(\alpha\)向量就可以求出\(w\)\(b\)了。具體怎么極小化上式得到對應的\(\alpha\),一般需要用到SMO算法,這個算法比較復雜,我們后面會專門來講。

5. 總結

線性可分SVM的學習方法對於非線性的數據集是沒有辦法使用的,有時候不能線性可分的原因是線性數據集里面多了少量的異常點,由於這些異常點導致了數據集不能線性可分, 那么怎么可以處理這些異常點使數據集依然可以用線性可分的思想呢? 我們在下一節的線性SVM的軟間隔最大化里繼續講。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM