機器學習實戰【5】(SVM-支援向量機)
阿新 • • 發佈:2019-01-06
本部落格記錄《機器學習實戰》(MachineLearningInAction)的學習過程,包括演算法介紹和python實現。
SVM(支援向量機)
SVM是一種分類演算法,通過對訓練集資料的分析找到最好的分隔平面,然後用該平面對新資料進行分類。本篇文章介紹SVM的總體思路,通過一些數學推導把初始問題不斷簡化,最後轉化為一個比較簡單的二次優化問題。
線性二分類器
設想二維平面上的一組資料點,分為兩個類別:
用平面上的直線
幾何間隔
點到直線的距離(推廣到高階就是點到超平面的距離)稱為幾何間隔(Geometrical margin),計算公式如下,其中的分子
上式中的y表示資料點的類別,在直線上方的點類別為1,下方為-1,這使得有錯誤分類點的那些直線會得到負的幾何間隔,從而被篩選掉。
現在我們可以通過幾何間隔來描述最優直線的條件,設
即最大化資料集中最小的幾何間隔。
接著繼續對問題進行簡化,函式間隔的大小可以通過成倍地改變w來改變,直線本身卻不會變化,這意味可以取合適的值使得這些支援向量與直線的函式間隔為1,這樣,問題就變成:
進一步分析,該式又等價於:
這是一個帶約束的二次優化問題,可以通過拉格朗日對偶的方法來解決。
拉格朗日對偶
通過引入拉格朗日乘子把條件統一到式子中進行優化,構造拉格朗日函式,其中
將
這樣,問題:
就等價於問題:
即先以
交換求最值的順序,得到原問題的對偶問題:
這個對偶問題更易求解,並且在滿足kkt條件的情況下,兩者的解相同,於是問題又轉化為求對偶問題的解。
首先固定
把這兩個式子帶回原式經過一番化簡,消去