1. 程式人生 > >機器學習筆記(13)---支援向量機SVM

機器學習筆記(13)---支援向量機SVM

前言

學習前幾章很順利,然後就覺得機器學習也不過如此,但學到這章時,發現如果沒有一點理論基礎,是看不懂的(如果不想看懂理論,可直接使用MLiA書上例子,只要知道怎麼把資料組織成演算法支援的資料型別即可),回想起看前幾章為什麼能這麼順利,原因是之前看過一堆相關視訊和書籍。
所以,從本章開始,會先給出相關的理論,然後再舉例並進行原始碼分析。如果想看演算法的效果,可直接上程式碼,這樣會有一個直觀的認識,會加深後續對理論的理解。
學SVM這個知識點卡了我好久了,離上次機器學習相關的部落格都已經三個多月了,雖然SVM還有好多知識點沒弄明白,但是先進行下去,到時候再回來弄清楚每個知識點。

SVM所需要的背景知識

  • 拉格朗日乘數法,可參考《高等數學 第7版》同濟大學下冊 第九章“多元函式微分法”第八節多元函式的極值及其求法中和拉格朗日乘數法相關的內容。
  • 凸優化

支援向量機

間隔與支援向量

MLiA書上說,有些人認為SVM是最好的現成的(指分類器不加修改即可直接使用)分類器。SVM有很多實現,如SMO(Sequential Minimal Optimization, 序列最小優化)演算法和kernel(核函式)演算法。

要把給定的資料分隔開就需要一個分隔超平面,二維資料的分隔超平面就是一條線,三維的就是面,總之分隔超平面的維度就是所給定的資料維度減一維。我們的目標是找到離分隔超平面最近的點,確保它們離分隔超平面的距離儘可能遠

。這裡點到分隔超平面的距離被稱為間隔支援向量(support vector)就是離分隔超平面最近的那些點。

分隔超平面可通過如下線性方程描述:

(1)wTx+b=0
其中w=(w1;w2;;wd)為法向量,決定了超平面的方向; b為位移項,決定了超平面與點之間的距離。顯然,分隔超平面可由法向量w和位移b確定。(摘至西瓜書P121底部)

要計算點A到分隔超平面的距離,就需要給出點到分隔面的法線或垂線的長度,該值為:

(2)r=|wTA+b|||w||
在Logistic迴歸一節介紹過分類函式Sigmoid,這裡也需要一個類似Sigmoid的分類函式f(),將這個分類函式作用於
wTx+b
得到f(u)=f(wTx+b),當u<0時輸出-1,反之輸出+1,。和Logistic有所不同,那裡得到的類別是0或1。令
(3){wTxi+b+1,yi=+1;wTxi+b1,yi=1;
這裡注意:為什麼我們可以令其大於等於或小於等於1呢?不應該是0麼?周老師在附註中解釋:若超平面能將樣本正確分類,則總存在縮放變換使得上式(3)成立,但並未展開。可參考李航老師書:係數縮放變換,則上述左側值相應變,但超平面不變。不妨令其為1。此段摘至:https://blog.csdn.net/niaolianjiulin/article/details/77744247

支援向量,即距離超平面最近的幾個訓練樣本點,使上式等號成立。兩個異類(一個正類一個負類)支援向量到超平面的距離之和為

(4)γ=2||w||
γ稱為間隔(margin)(這是西瓜書P122上說的,和MLiA上說的點到分隔超平面的距離被稱為間隔,有點出入)。

想找到具有最大間隔的劃分超平面,也就是要找到能滿足式(3)中約束的引數wb,使得γ最大,即

(5)maxw,b2||w||s.t.yi(wTxi+b)1,i=1,2,,m.
yi(wTxi+b)中的yi是label,MLiA上