支援向量機演算法與實現
阿新 • • 發佈:2018-12-16
1 演算法思想
支援向量機(support vector machines) 是找到一個超平面(hyperplane)將資料劃分為一類與其他類的一種二類分類模型,分離間隔最大而區別於感知機。
適用於:
- 資料可直接分為兩類(採用error-correcting output codes 方法區分多類);
- 高維不能線性可分的資料;
- 簡單分類。
支援向量機類別:
- 線性可分支援向量機(linear support vector machine in linearly separable case)——硬間隔最大化(hard margin maximization)
- 線性支援向量機(linear support vector machine)——軟間隔最大化(soft margin maximization)
- 非線性支援向量機(non-linear support vector machine)——核技巧(kernel trick)
2 演算法步驟
2.1 線性可分支援向量機
由線性分類器可知:一個線性分類器的學習目標便是要在n維的資料空間中找到一個超平面(hyper plane),這個超平面的方程可以表示為:
分離超平面:
分類決策函式:
函式間隔(functional margin):
對於樣本點 ,。
幾何間隔(geometric margin):
對於樣本點 ,
支援向量:
欲找到具有最大間隔的劃分超平面,也就是是 最大,即: 最大間隔分類器就是我們求取的分類超平面, 等於, 而函式間隔假設為1,就可得到最大間隔超平面: , 而約束條件是因為函式間隔是所有樣本點的間隔函式中最小值。
2.2 SVM的二次凸函式和約束條件
支援向量機的學習策略是間隔最大化,可形式化為一個求解凸二次規劃(convex quadratic programming).
僅需最大化,這等價於最小化。於是,上式可重寫為: 這是支援向量機的基本型,其本身為一個凸二次規劃問題。
使用拉格朗日乘子法可得到其“對偶問題”(dual problem),其拉格朗日函式可寫為: 其中是拉格朗日乘子。
利用對偶性的結論, 對關於和求偏導數: 將上式帶入式(2)中,可得式(1)的對偶問題: