支持向量機
1. 概述
支持向量機是機器學習中的一種分類方法,屬於判別式模型(Discriminative Model)中的一種。其基本思想是: 對於給定的數據集D在樣本空間中找到一個劃分超平面,從而將不同類別的樣本分開。如圖1 所示:
圖1中的灰色區域部分的寬度即為「間隔」(margin), 支持向量機的目標在於尋找一個最大間隔的劃分超平面,使得該超平面將不同類別的樣本區分開。最大間隔的劃分超平面對訓練樣本的局部擾動的「容忍」性最好,分類結果最魯棒,對未見示例的泛化能力也最強。
2. Linear SVM
在樣本空間中,劃分超平面可以通過下面的線性方程來描述:
其中,w為法向量,決定了超平面的方向;b為位移項,決定了超平面與原點之間的距離。接下來,如何計算樣本空間中任意點x到超平面的距離呢?首先,先回顧一下向量投影的相關知識:
向量xx沿單位向量 方向的投影距離d可由下列公式推導出:
對於圖3中超平面外的一點x,其到超平面的距離推導如下:
所以,x到超平面的距離dist為:
其中, 表示沿超平面法向量 方向的單位向量。
給定訓練集 ,當 =+1,有 ;當 =-1,有 。聯立這兩種情況得: 。所以點x到超平面的距離可以轉化為:
支持向量機的基本思想是最大化間隔("margin"),也就是最大化「支持向量」(距離超平面最近的樣本點)到超平面的距離,表示成目標函數為:
如圖4所示,取經過異類支持向量的兩個超平面分別為:
則 ,所以上述的目標函數可以簡化為:
顯然,最大化 等價於最小化 ,於是,目標函數等價於
3. Dual Problem
拉格朗日對偶問題:
為目標函數的每條約束條件引入拉格朗日乘子 ,則該問題的拉格朗日函數可以寫為
KKT 條件( 拉格朗日函數得到最優解需要滿足以下條件):
KKT 條件的推導過程如下:
因為 ,所以
的對偶函數可以寫成為
又因為
所以,當 時,
也即是:
上式表明,當滿足一定條件時,原問題,對偶問題的解是相同的,且在最優解 處 (即 )。可得:
所以 是函數 的極值點,也即
綜上所述:
4. Dual SVM
對於Linear SVM 的目標函數
對函數的約束條件引入拉格朗日乘子得到拉格朗日函數為:
當滿足KKT條件時,原問題等價於其對偶問題
令 對 和b求偏導數得
代入拉格朗日函數,消除 和b,得:
所以,對偶問題的目標函數可化為
根據KKT條件
當 時, 對應的樣本點 不會對目標函數產生影響;
當 時,則必有 ,所以
因此,對於 的樣本點處於最大間隔邊界()上,也就是所謂的"支持向量"。
5. SMO
上述目標函數是一個二次規劃問題,可使用通用的二次規劃演算法來求解,但該問題的計算複雜度正比於訓練樣本的數目,可用SMO演算法高效求解:
未完待續(To be continue) ...
參考文獻
[1] 周志華. 機器學習
[2] Jun Wu. Web Search & Recommendation—SVM
[3] mo_wang. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT條件
推薦閱讀:
※【深度學習系列】卷積神經網路CNN原理詳解(一)——基本原理
※機器學習項目流程清單
※RF、GBDT、XGBoost常見面試題整理
※線性支持向量機(soft-margin SVM)
※平移不變的正則線性回歸
TAG:機器學習 |