支援向量機(support vector machines)是一種二分類模型,它的目的是尋找乙個超平面來對樣本進行分割,分割的原則是間隔最大化,最終轉化為乙個凸二次規劃問題來求解。由簡至繁的模型包括:
1、間隔最大化和支援向量
如果乙個線性函式能夠將樣本分開,稱這些資料樣本是線性可分的。那麼什麼是線性函式呢?在二維空間中就是一條直線,在三維空間中就是乙個平面,以此類推,如果不考慮空間維數,這樣的線性函式統稱為超平面。上圖中二維空間的樣本就是線性可分的,但是很顯然不只有這一條直線可以將樣本分開,而是有無數條,我們所說的線性可分支援向量機就對應著能將資料正確劃分並且間隔最大的直線(上圖中的wx+b=0)。
svm的目標是尋找乙個超平面,使得離超平面最近的點到超平面的距離(間隔)最大,而不必考慮所有的樣本點。離超平面最近的點所在的平面稱為支援向量(上圖中的wx+b=+1和wx+b=-1)。
計算間隔(間隔即為兩個支援向量間的距離):
參考可以理解為兩條平行線wx+b+1=0和wx+b-1=0之間的距離,即|b+1-(b-1)| / ||w|| = 2 / ||w||
至此,我們求得了間隔,svm的思想是使得間隔最大化,也就是:
顯然,最大化 2 / ||w|| 相當於最小化 ||w||,為了計算方便,將公式轉化成如下:
上述公式即為支援向量機的基本型。
2、對偶問題
上述公式本身是乙個凸二次規劃問題,可以使用現有的優化計算包來計算,但我們選擇更為高效的方法。根據拉格朗日的對偶性,原始問題的對偶問題是極大極小問題:
其中,
首先求得
上式分別對 w 和 b求偏導:
令其分別為0,可以得到:
將公式(9)(10)代入公式(8),可得:
然後求
上面兩圖中的xixj均為(xi,xj),即xi和xj的內積
解出 α 之後,進而求出w和b(參考:統計學習方法p105 定理7.2):
推導過程:
kkt條件:
參考和統計學習方法7.2
參考和統計學習方法7.3
至此,關於svm的三類問題:線性可分支援向量機與硬間隔最大化,非線性支援向量機與核函式,線性支援向量機與軟間隔最大化一一介紹完畢,最後附上對svm使用範圍的一段總結:
我們所面對的所有的機器學演算法,都是有適用範圍的,或者說,我們所有的機器學習演算法都是有約束的優化問題。而這些約束,就是我們在推導演算法之前所做的假設。
比如:logistics regression,在logistics regression中,假設後驗概率為logistics 分布;再比如:lda假設fk(x)是均值不同,方差相同的高斯分布;這些都是我們在推導演算法之前所做的假設,也就是演算法對資料分布的要求。
而對於svm而言,它並沒有對原始資料的分布做任何的假設,這就是svm和lda、logistics regression區別最大的地方。這表明svm模型對資料分布的要求低,那麼其適用性自然就會更廣一些。如果我們事先對資料的分布沒有任何的先驗資訊,即,不知道是什麼分布,那麼svm無疑是比較好的選擇。
但是,如果我們已經知道資料滿足或者近似滿足高斯分布,那麼選擇lda得到的結果就會更準確。如果我們已經知道資料滿足或者近似滿足logistics 分布,那麼選擇logistics regression就會有更好的效果。
機器學習 SVM演算法
經常遇到或用到svm演算法,不過都是用的別人的 並沒有深入的研究理解過。感覺很不應該,今天記錄一下自己的感受和理解。之前對svm的理解就是將資料對映到高維空間從而找到最優的分割平面。處理二維資料時,為一條分割線,三維時就是乙個超平面。當維度上公升,那就是尋找更高維的超平面。如何確定哪條分割線是最優的...
機器學習演算法療程(SVM)
svm處方清單 libsvm在matlab下的使用 libsvm3.2.0中的matlab文件說明 解密svm系列 一 關於拉格朗日乘子法和kkt條件 解密svm系列 二 svm的理論基礎 解密svm系列 三 smo演算法原理與實戰求解 解密svm系列 四 svm非線性分類原理實驗 解密svm系列 ...
機器學習 基礎演算法 SVM
support vector machine 一般去理解乙個演算法,都是從名字入手,接觸了這麼幾個演算法,這是唯一乙個讓人捉摸不透的名字.svm from the classifier to the closestdata pointscalled thesupport vector,these s...