支援向量機|機器學習推導系列(七)
一、硬間隔SVM
1. 模型定義
假設有以下數據:
SVM的主要思想是在特徵空間中尋找一個最大間隔的超平面實現數據的二分類,SVM屬於判別模型。這裡的間隔指的是樣本點到分離超平面的距離的最小值,用函數
來表達。下圖中在
和
線上的樣本點就叫支援向量:

超平面實現將數據的正例和負例分隔開,因此有:
另外最大間隔通過以下方式來表達:
然後求解支援向量機就可以轉化為以下帶約束的優化問題:
上述優化問題還可以進一步轉化:
由此上述優化問題轉化為:
這是一個帶N個約束的凸優化問題。
2. 優化問題的轉化
上述優化問題可以使用拉格朗日乘子法來求解,構建拉格朗日函數:
然後上述優化問題就可以轉換為以下優化問題:
我們可以簡單地看一下為什麼可以這麼轉化:
然後使用以下結論繼續對該優化問題進行轉化:
因此該優化問題可以繼續轉化:
總結一下,該優化問題經歷了以下轉化過程:
3. 模型求解
對
求導
求解
這裡我們可以看出是數據的線性組合。
得出
因此該優化問題就相當於:
也就相當於:
KKT條件
首先定義該優化問題的KKT條件:
該優化問題滿足上述KKT條件,這是由於以下定理:
KKT條件中也叫鬆弛互補條件,即
和
總有一個為0。也就是說只有支援向量對應的
才可能有值(
),而其他不在
和
上的樣本點對應的
一定為
,該性質可以用來求出
。
我們已經根據求出了
,接下來要求出
,我們可以通過求解
來得出各個
,而這個過程也是支援向量機演算法計算量最大的地方,這裡我們就不展示過程了。
找出求解得到的不等於的
,也就是支援向量對應的
,假設其中一個支援向量為
,則有
,最終可以解得:
二、軟間隔SVM
我們的訓練數據通常不是理想的線性可分,有時甚至是線性不可分的數據。對於存在雜訊的一些數據,我們應該允許一點分類錯誤,因此我們需要對目標函數進行一些調整:
1. 使用誤分類點的個數作為loss
顯然使用的指示函數是不連續的,不利於求解,所以不使用這種loss函數。
2. 使用距離作為loss
該函數為合頁損失函數(hinge loss),令,則
對
的影像如下:

合頁損失函數
3. 軟間隔SVM的優化問題
引入,則該優化問題轉化為:
上面的式子中,常數可以看作允許的錯誤⽔平,同時上式為了進⼀步消除
符號,對數據集中的每⼀個觀測,我們可以認為其⼤部分滿⾜約束,但是其中部分違反約束,因此這部分約束變成
。
軟間隔SVM也是使用拉格朗日乘子法進行求解。
