支持向量機原理推導(一)

用python進行數據挖掘和機器學習一直很火,所以近段時間就在自學《機器學習實戰》這本書,發現裏面講支持向量機時對原理公式的推導講得並不詳細,上網查資料發現講得並不很系統,有點零碎的感覺,導致對於我這種小白的童鞋來說頗爲艱難,因此經過長時間的資料查詢後準備綜合各路大神的思路和我自己的理解來寫一波關於公式原理推導的文章。文章以《機器學習實戰書》爲進度進行步步拆解(大神可以略過啦~正在奮鬥的小白也可以私下交流共同學習)。
SVM指的是支持向量機(外文名Support Vector Machine),在機器學習領域,是一個有監督的學習模型,通常用來進行模式識別、分類以及迴歸分析。
我們這裏以二維圖線性分類爲例進行講解,在對如下圖A進行分類時,可得到很多個分割超平面,然而我們要從中選擇最優的分割超平面,這便是SVM的要做的,選出最優的分割超平面。

6c1f231f442a86b40dc847531cdf138a2d6c17e0

那麼什麼樣的平面爲最優的分割超平面呢?就像上圖D一樣,使距離分割超平面最近的點與超平面的間隔最大便是我們要尋找的,這裏距離分割線最近的點就叫做支持向量,分割線就叫做分割超平面,支持向量與分割超平面就叫做」間隔」。我們所要做的就是最大化這個間隔。

0cdb49682f564e2602ac248143330f5a609e8921

書上給出座標點A與分割超平面W^tX+b=0間隔的公式爲:m=|W^t A+b|/||W|| 
其中W爲分割線的係數向量,X爲參數向量(此處代表x1,x2),A爲A點的座標向量。 
那麼我們現在就推導一下這個公式。

一、首先我們得簡單推導一下座標點A到過原點直線L的距離。我們有過原點的直線L:W^tX=0(它的法向量爲W),座標向量A,求A向量在W向量上投影P向量的模長(即A點到直線L的距離)

7169ddce3fb299a851adfb79fc5b5ca83d3f042d

W的方向向量u爲u=W/(||W||),其中||W||代表W向量的模長,||u||=1。 
P的模長|(|P| )|=|(|A| )| cosθ(1) 
又因爲u•A=||u||||A||*cosθ=|(|A| )|*cosθ(2) 
由(1),(2)可得||P||=u•A=(W•A)/(||W||)

二、下面我們推導一下A點到不過原點的直線L的距離:我們有直線L:W^tX+b=0,座標向量A。

23800018a6ab98ee9ce6c5ec81044403daf5aa69

設W(m,n),X(x1,x2),直線L爲m*x1+n*x2+b=0,截距-b/n,K向量爲(0, - b/n) 
所以根據上一條結論可得 
||P2||=(W•K)/(||W||)=((0,(-b)⁄n)•(m,n))/(||W||)=(-b)/(||W||) 
||P2||=(W•A)/(||W||) 
||P||=||P2||-||P2||=(W•A)/(||W||)-(-b)/|(|W| )| =(W•A+b)/(||W||) 
所以間隔 m=|W^t A+b|/||W||

原文發佈時間爲:2017-08-14
本文作者:exploit
本文來自雲棲社區合作伙伴「 Python中文社區」,瞭解相關信息可以關注「 Python中文社區」微信公衆號