一、回顧:邏輯迴歸
在邏輯迴歸原理裏,損失與的關係如下:
在結合下左圖Sigmod函數分析可得:
- 在是正例的情況下,,越大,越小;
- 在是負例的情況下,,越小,越小;
從上右圖解釋就是:邏輯迴歸在分類的過程中,會考慮每個樣本點到分割線的距離——離分割線越遠的點,其提供的損失越小,而總體的損失是等於每個樣本點提供的損失之和;換言之:邏輯迴歸是考慮整體/全局的損失,每個樣本都對分割線的參數構成影響;
–-----------------------------------------------------------------------------—------------------------
–-----------------------------------------------------------------------------—------------------------
二、支持向量機介紹:
而支持向量機,它就只考慮支持向量點的損失,支持向量以外的點(也叫超越幾何間隔的點)的損失規定爲0,不對總體損失構成影響;
例如下圖:中間的黑實線相當於分割線,左右與之平行的兩條虛線構成中間的幾何間隔,兩條虛線上的樣本點就是支持向量點,幾何間隔外的樣本點的損失;
支持向量機是一種二分類模型,其基本模型定義爲特徵空間上的間隔最大化的線性分類器;其學習策略便是使分割面的間隔最大;
–-----------------------------------------------------------------------------—------------------------
2.1、線性可分數據、線性不可分數據:
其數據也大多分成兩類:
- 線性可分的數據,線性可分的數據使用超平面類型的邊界
- 線性不可分的數據,線性不可分的數據使用超曲面類型邊界;
對於來自兩類的一組數據能用一個線性函數正確分類的,稱是線性可分的數據。線性函數可以是低維上的直線,也可以是高維上的平面,例如下圖即爲線性可分數據:
而線性不可分的數據大致有兩種情況導致的:
- 樣本的本質是線性可分的,但由於部分噪聲的影響,導致線性不可分,這種情況的解決方法是:使用軟間隔;
- 樣本的本質就是線性不可分的,這種情況的解決方法是:使用核函數,將線性不可分的數據轉化成線性可分的數據;
例如下圖即爲線性不可分數據:
–-----------------------------------------------------------------------------—------------------------
–-----------------------------------------------------------------------------—------------------------
三、支持向量機原理:
我們怎樣才能確定出一個最優的劃分直線/超平面呢?也就是說怎樣通過訓練數據學習到最優的與?
根據支持向量機的學習目標:要使分割面的間隔達到最大。從下圖可以發現:1圖的分割方式不能起到分類的效果,2、3的分類面間隔沒有4的大;所以支持向量機就是在尋找最大間隔的分割線;
而分割線中的與只和支持向量點有關,也就是說最大間距也是和支持向量點有關;
–-----------------------------------------------------------------------------—------------------------
3.1、定義中間間隔:
我們以下圖(負例)中的兩條綠色直線、爲例,方程各爲,;根據幾何原理數值上有,再乘以其標籤,則,可得到的結論是——越大,說明偏離中心的距離越遠;
於是我們將中間間隔定義爲如下:(等於上圖的一半)
- , {-1,1}
其中是直線方程,是任意樣本點座標,是座標所對應的標籤(二維平面可簡單理解爲:樣本標籤軸截距)
有了上面這個中間間隔的定義,我們就可以將支持向量點、非支持向量點分開考慮,以便更好的確定出支持向量機的算法原理。
–-----------------------------------------------------------------------------—------------------------
3.2、考慮支持向量點到分割線的距離關係
支持向量點會確定出分割線的參數。假設已知支持向量點確定出來的分割線方程就爲,則支持向量點到分割線的垂直距離爲:
是該分割線方程的範數,上公式其實就是範數形式的點到直線的距離公式;
–-----------------------------------------------------------------------------—------------------------
3.3、考慮其他樣本點到分割線的距離關係
根據上面中間間隔的定義,其他樣本點到分割線的距離都會滿足:
–-----------------------------------------------------------------------------—------------------------
3.4、SVM的優化策略:(重要)
根據上面3.2、3.3提及的距離關係,支持向量機的優化策略就是:
- 在每一個樣本點都滿足的前提下,使支持向量點到分割線的垂直距離最大化。
數學表達式即可定義爲下左式:
上左式需要轉化,計算轉化的過程如下:
- 由於是一個不小於0的係數,所以——在目標函數中不對的變化構成影響,可以去掉;在約束函數中也可作爲分母除進左式進行係數縮放,於是就變成上中式;
- 分割線方程的L-2範數也是一個不小於0的係數,所以——求目標函數的最大值也相當於求目標函數倒數的最小值(和的操作是方便後面求導),於是最終式就變成上右式:
於是之前的支持向量機的優化問題就轉化爲一個普通的凸優化問題,得到的上右式。
–-----------------------------------------------------------------------------—------------------------
–-----------------------------------------------------------------------------—------------------------
四、支持向量機求解:(重要)
總括:支持向量機的求解過程一共可分爲四步:
- 定義最大間隔,得到支持向量機的數學表達式(上面第三部分最後得到的式子);
- 用拉格朗日乘子法轉化數學表達式;
- 對偶問題處理;
- SMO優化算法(序列最小最優化算法)求解、,得到超平面方程。
我們在第三部分最後得到的數學表達式的基礎上,詳細介紹2、3、4步是如何實現的;
–-----------------------------------------------------------------------------—------------------------
4.1、拉格朗日乘子法
拉格朗日乘子法的主要思想:是引入新參數 (即拉格朗日乘子),將約束條件函數與目標原函數聯繫到一起,使能配成與變量數量相等的等式方程,從而求出得到目標原函數極值的各個變量的解。定義如下:
所以根據以上定義,經過轉化後得到的拉格朗日乘子式即爲:
注意:上圖的拉格朗日乘子式的自變量分別是、、
研究可以發現,由於樣本集任意一點都會滿足約束條件:的值大於等於0,加上,所以上面得到的拉格朗日乘子式的減數是一個不小於0的值,所以是存在最大值的,且最大值就等於:
- ,
而我們的目標是求,也就是說需要將上等式左右取,即求取:
–-----------------------------------------------------------------------------—------------------------
4.2、對偶問題研究
注:自變量分別是、、。
上面的就是互爲對偶。在對偶問題中,一般有,當在滿足KKT條件時有:;
(補充知識:有同學會問:爲什麼非要做一次對偶問題研究呢?簡單說就是:使數據降維,方便計算;具體原因可以詳見這裏)
現在我們求解的目標就由求解轉成求解了,拆分後就是先求再求;
–-----------------------------------------------------------------------------—------------------------
第一步:求解,其中自變量是和,是常數
要求解關於和的最小值,我們需要對求偏導令其等於零,得到:
將這兩個偏導結果帶回上式中,得到:
–-----------------------------------------------------------------------------—------------------------
第二步:求解,其中自變量是,是常數
根據第一步的結果,問題就轉化爲如下規劃問題:
現在我們需要求以爲自變量的極大值,即是關於對偶變量的優化問題,由凸二次規劃的性質就能保證最優的向量是存在的;
–-----------------------------------------------------------------------------—------------------------
4.3、SMO優化算法(序列最小最優化算法)
這個算法就不在這裏展開說明了,有興趣的同學自己去了解吧,要講起來太複雜了,本篇篇幅已經夠長了
根據SMO優化算法:
- 是4.2解出來的最優解,
- 是點的類別標籤,1或者-1,
- 是點的座標數據,矩陣式;
根據上面公式就可求出和,即最優超平面的參數;
–-----------------------------------------------------------------------------—------------------------
以上便是SVM的主要算法過程,下面附帶一個例子加深瞭解
–-----------------------------------------------------------------------------—------------------------
4.4、舉例
例:我們有三個訓練數據,正例點,,負例點,試求最大間隔的超平面方程。
解:設超平面的方程爲:,因爲這是個二維求解,所以的維度等於2,所以更一般的超平面方程的表達式爲:
根據3.4介紹,再帶入正例、負例的座標得到的數學規劃表達式如下:
再根據4.2第二步介紹,轉化後的規劃問題即爲:
(註釋:解釋上面式子是如何通過4.2第二步得到的——在本章節最後有補充)
將帶入上面的目標函數,得到只關於、的函數:
我們需要求上式的最大值,所以對求偏導令其偏導等於零,即:,
由於在約束條件的情況下有,所以上式只有兩組解:要麼,要麼;
將這兩組解回代到拉格朗日乘子式可以發現:的值要小於的值,所以上式的最優解爲:,;
將最優解帶入4.3介紹的SMO優化算法中得到:,;()
所以最大間隔的超平面方程爲:+-2=0,支持向量爲
–-----------------------------------------------------------------------------—------------------------
補充:式子是如何通過4.2第二步得到?——以爲例:
在4.2第二步,式子的減數部分爲如下,是對應的樣本點座標,是樣本點對應的標籤;
來自於兩部分:和,
看部分: (部分同理)
- 當,上式即爲:。
- 、,決定符號爲正;
- ,,矩陣相乘=
–-----------------------------------------------------------------------------—------------------------
–-----------------------------------------------------------------------------—------------------------
後記:
【線性可分】的支持向量機原理大致如上,介於本篇篇幅過長,【線性不可分數據】的處理方法,例如:軟間隔、核函數在我的下一篇博客:【機器學習】11:支持向量機原理2:軟間隔與核函數處理方法