支撐向量機,SVM(Support Vector Machine),其實就是一個線性分類器。在最初接到這個算法時,我們可能會一頭霧水:這個名詞好奇怪[問號臉],怎麼「支持」?什麼「向量」,哪來的「機」?
本篇文章從「不適定問題」開始介紹SVM的思想,通過支撐向量與最大間隔引申到如何將其轉換為最優化問題,並數學推導求解有條件限制的最優化問題。相信學完本篇之後,大家一定會對SVM算法有一個大體上的認識。
0x01 由決策邊界開始 1.1 分類中的「不適定問題」首先,我們看一個簡單的二分類問題。在二維的特徵平面中,所有的數據點分為了兩類:藍色圓形和黃色三角。我們的目標是找到了一條決策邊界,將數據分類。但實際上我們可以找到多條決策邊界。
這就所謂的「不適定問題」。「不適定問題」會影響模型的泛化性。比如在下面的模型中,被黃色箭頭標出的點被決策邊界劃為藍色圓點,但實際上它和黃色三角更近一些。也就說決策邊界的選擇,不僅要考慮已經存在的數據上的是否分類正確,還要考慮是否能夠更好地劃分未出現的測試數據:
邏輯回歸算法如何解決「不適定問題」問題呢?首先定義一個概率函數sigmoid函數:
然後根據概率函數進行建模:
建立損失函數:
最小化損失函數,從而求出一條決策邊界(線性):
(以上內容回顧文章《Kaggle出場率No.1的邏輯回歸算法到底是如何推導出來的》、《邏輯回歸的本質及損失函數的推導、求解》、《邏輯回歸的決策邊界及多項式》)
也就說,邏輯回歸的損失函數完全是由訓練數據集確定的。
1.2 SVM中的決策邊界支撐向量機如何解決「不適定問題呢」?SVM要找到一條泛化性比較好的決策邊界,就是這條直線要離兩個分類都儘可能的遠,我們認為這樣的決策邊界就是好的:
如上圖所示:在上面的兩個類別中,離決策邊界最近的點到決策邊界的距離儘可能地遠。
那也就是說,我們可以忽略其他大部分的數據點,只關注這幾個特殊的點即可。
0x02 Support Vector & Margin 2.1 定義及思想將最優決策邊界向上&下平移,在遇到第一個點時停下來,這個點被稱為支撐向量Support Vector;支撐向量到決策邊界的距離是d;這兩條平移後的直線的間隔(2d)被稱為最大間隔Margin。
支撐向量就是支撐著兩條平移邊界的點,我們只需要重點研究這幾個支撐向量即可,這也是SVM名稱的由來;Margin就是分界面可以移動的範圍,範圍越大表示容錯能力越強。
所以我們可以看到,所謂的支撐向量機,最初就是一個線性分類器,只不過這個線性分類器不僅能把樣本分對,可以最大化Margin。
到目前為止,我們就將SVM轉換為了一個最優化問題,下面的工作就是求出Margin的數學表達式,即將支撐向量機思想轉化為數學問題。
2.2 轉化為最優化問題(核心)回憶解析幾何的知識,點
擴展到n維空間:點
然後我們去找決策邊界的表達式:
求出在滿足下面的條件下,
我們將上面的兩個式子進行合併,即可以將
對於任意支撐向量點
即相當於最小化
OK,現在我們已經得到了SVM的最優化問題:
即最優化的目標函數為
我們發現,SVM的最優化問題是有限制條件的,與之前接觸的沒有限制條件的全局最優化問題的計算方法很不同。
0x03 求解有條件限制的最優化問題 3.1 數學推導通過六步數學推導,求解有條件限制的最優化問題。如果覺得吃力,大家可以僅僅了解推導過程,記住結果即可。
第一步:給出表達式
對於有約束條件的最優化問題,用拉格朗日乘數法來解決,得到(
此時,我們要求
第二步:求導
我們對
從上兩式子可以看出,我們已經求得了
第三步:轉換對偶問題
將
其實
第四步:求
把
第五步:求
我們將所有非零的支撐向量相乘並累加起來,最終得到
這裡要注意,兩個向量做內積,是SVM運算的精華所在。
第六步:求
已知
通過一個簡單的例子,展示SVM如何求解。有兩個樣本:
通過約束條件:
我們要優化的表達式為:
將
帶入到表達式中,得到:
則表達式
帶回到
最終得到判決平面為:
其實我們可以看到,SVM算法也沒有多麼神秘。其最核心的思想就是從Input Space向更高維的Feature Space的映射,進行有Margin的線性分類。
在這一篇文章中,我們要做的就是學習支持向量機算法的相關概念、算法思想、推導過程。一邊體會算法的奧義,一邊為後續的進一步學習做準備。
在線性可分問題中,對於樣本點來說,存在一根直線可以將樣本點劃分,我們稱之為Hard Margin SVM;但是事實上,並不是所有情況都是完美的,這就引出了下一篇文章就講解Soft Margin SVM以及相關知識。大家加油!