一、什麼是支持向量機 SVM
支持向量機( Support Vector Mavhine )簡稱 SVM ,是一種二類分類模型。SVM 的目標是找到一個超平面,然後找到各個分類離這個超平面最近的樣本點,使得這個點到超平面的距離最大化,即使直線兩端的數據間隔最大。與分割超平面距離最近的樣本稱爲支持向量,下圖中虛線是間隔邊界,確定最終的分割超平面只有支持向量起作用,其他樣本點不起作用,所以稱爲支持向量機。
這個超平面用 ,f(x)>0 時,y=1,爲正類,如圖中圓圈表示;f(x)<0 時,y= - 1,爲負類,如圖中星星表示;
y 爲什麼用+1,-1表示?
1.對於二類問題,y 只要取兩個任意值就行;
2.支持向量機 SVM 去解二類問題,目標是求一個特徵空間的超平面,而超平面分開的兩類對應於超平面的函數值的符號是剛好相反的。上述兩種考慮,爲了使問題足夠簡單,我們取 y 的值爲 1 和 -1。
接下來問題是尋找最大間隔的超平面
二、函數間隔和幾何間隔
在分割超平面 w*x+b=0 確定的情況下,|w*x+b| 可以表示樣本點距離超平面的遠近。當 w*x+b 與樣本標籤 y 同號時,表示分類是正確的,所以使用 y(w*x+b)來表示分類的正確性和確信度,這是函數間隔的定義。
1.函數間隔:
超平面 (w,b) 關於訓練數據集 T ( m 個)中所有樣本點 (xi,yi) 的函數間隔最小值(其中,x 是特徵,y 是結果標籤,i 表示第 i 個樣本),便爲超平面 (w, b) 關於訓練數據集 T 的函數間隔:
函數間隔可以表示分類預測的正確性和確定性,但是,當 w 和 b同時放大對於超平面沒有任何改變,函數值f卻變大。爲解決這個問題我們對法向量w加約束條件,從而引入幾何函數。
2.幾何函數:
假定對於一個點 x ,令其垂直投影到超平面上的對應點爲 x0 ,w 是垂直於超平面的一個向量,爲樣本x到超平面的距離,如下圖所示,
由平面幾何知識得:
因爲x0在超平面上,所以f(x0),即 ,對式 左右兩邊同乘,由 得:
爲了得到的絕對值,對上式同乘以y,使 ,則幾何間隔定義爲:
由上式知幾何間隔就是函數間隔除以 ||w||,函數間隔 y*(wx+b) = y*f(x) 實際就是 |f(x)|,幾何間隔纔是直觀上的點到超平面的距離。
3. 最大間隔
對一個數據點進行分類,當超平面離數據點的“間隔”越大,分類的確信度也越大。所以,爲了使得分類的確信度儘量高,需要讓所選擇的超平面能夠最大化這個“間隔”值。這個間隔就是下圖中的 Gap 的一半。
在函數間隔中超平面不變的情況下,等比例地縮放 w 的長度和 b 的值,這樣可以使 f 得的值任意大。但幾何間隔因爲除,使得在縮放 w 和 b 的時候幾何間隔的值是不會改變的,它只隨着超平面的變動而變動,所以最大間隔分類超平面中的“間隔”指的是幾何間隔。
則幾何間隔最大化的目標函數爲:
同時滿足:
可以令 ,則可轉化爲最小優化問題爲: (由於求 1/||w|| 的最大值相當於求 的最小值)
三、分割超平面的求解
在前面我麼們所有的數據集其樣本都是可分類的,即存在分割超平面。但現實中的數據集,總存在着部分的特異點,只有將其去除纔可線性可分。我們爲了解決這個問題,對每個樣本引入鬆弛變量 。每個鬆弛變量都有一個代價 C,優化目標變爲:
對前面求出的最小優化問題我們使用拉格朗日乘數法求解,將其轉化爲無約束條件的問題,即:
其中
則最小化問題爲:,根據拉格朗日的對偶性,轉化爲對偶問題則爲:
先對 w,b 求偏導並使其爲零,則:
將結果帶入 L 中,則有下面的推導過程:
當a* 爲最優解時,可得問題的最優解爲:
選擇a*的一個分量,則b的最優解爲:
下一節瞭解序列最小優化算法 SMO
參考文獻 趙志勇《python 機器學習算法》