資料科學從頭學(四) SVM(線性)

(文章內容皆為記錄本人之學習過程,非以分享為目的)

理論參考:林宗勳的網路教學資料 (daniel@cmlab.csie.ntu.edu.tw)

1.數學基礎:
  .線性代數(向量空間的直線、平面、距離....等)
  .多變數限制條件求極值  Lagrange multiplier method(拉格朗日乘數)




2.用途:SVM (Support Vector Machines)是一種分類演算法,在解決小樣本、非線性及高維模式識別問題中表現出許多特有的優勢。



3.理論: SVM目標是找出一個超平面(Hyperplane),使之將兩個不同的集合分開,以二維的例子來說



















希望找到一條線來區分集合點(如下),距離兩邊界最大的就稱為Optimal Separating Hyperplane  (OSH)。 (以上均為向量)






以與 Optimal Separating Hyperplane平行,並且最靠近兩邊的超平面(Support Hyperplane )來求解。以上圖的例子來說,那兩條虛線就是 Support Hyperplane。


將Support Hyperplane 寫成如下的式子:










 因為變數過多,讓等號兩邊同乘常數使δ =1 ,並定義Separating Hyperplane與兩個Support Hyperplane的距離為d,兩個Separating Hyperplan之間的距離margin 是2d,以下計算距離d:














(備註:參考兩平行線求距離之公式)

 Support Hyperplan與Optimal Separating Hyperplane的距離在±1以內(我們已經先做過尺度調整),所以我們將限制條件寫成下面兩個式子:




限定條件的關係,上面的最佳化問題可以利用Lagrange Multiplier Method將上面的式子轉成一個二次方程式,找出可以使L為最小值的w, b, αi。(αi就是Lagrange Multiplier)










分別對變數 W 、b偏微分後,加上限制條件供三個方程式:


















上面這些條件又被稱為KKT條件(Karush-Kuhn-Tucker conditions)

當我們把訓練資料(Training Data)丟進來時,有些點會滿足上面的KKT條件,而這些點就是剛好落在Support Hyperplan上面的點,這些點又被稱為 Support Vector,並且它們的αi會大於 0
在我們求得 support vector 之後,我們就可以用它們來判斷新加入的點是屬於那一邊的集合。




 參考1.(Lagrange multiplier):
http://episte.math.ntu.edu.tw/entries/en_lagrange_mul/index.html


參考2.求兩直線間距:
(來源:http://sites.ccvs.kh.edu.tw/board.php?courseID=216&f=doc&cid=17311)











 4. 實例:
數筆資料紀錄客戶年齡、預估薪水以及有無購買紀錄。

 將年齡與薪水分別設為x、y軸,有無購買的點分布於平面上,用SVM將其區分,計算出後續可以進行分類預測的直線。

 資料:


結果:
































Python主要語法:







留言

這個網誌中的熱門文章

統計從頭學(二) 假設檢定入門

資料科學從頭學(五) Linear Regression