機器學習筆記(13)---支援向量機SVM
阿新 • • 發佈:2019-01-11
前言
學習前幾章很順利,然後就覺得機器學習也不過如此,但學到這章時,發現如果沒有一點理論基礎,是看不懂的(如果不想看懂理論,可直接使用MLiA書上例子,只要知道怎麼把資料組織成演算法支援的資料型別即可),回想起看前幾章為什麼能這麼順利,原因是之前看過一堆相關視訊和書籍。
所以,從本章開始,會先給出相關的理論,然後再舉例並進行原始碼分析。如果想看演算法的效果,可直接上程式碼,這樣會有一個直觀的認識,會加深後續對理論的理解。
學SVM這個知識點卡了我好久了,離上次機器學習相關的部落格都已經三個多月了,雖然SVM還有好多知識點沒弄明白,但是先進行下去,到時候再回來弄清楚每個知識點。
SVM所需要的背景知識
- 拉格朗日乘數法,可參考《高等數學 第7版》同濟大學下冊 第九章“多元函式微分法”第八節多元函式的極值及其求法中和拉格朗日乘數法相關的內容。
- 凸優化
-
支援向量機
間隔與支援向量
MLiA書上說,有些人認為SVM是最好的現成的(指分類器不加修改即可直接使用)分類器。SVM有很多實現,如SMO(Sequential Minimal Optimization, 序列最小優化)演算法和kernel(核函式)演算法。
要把給定的資料分隔開就需要一個分隔超平面,二維資料的分隔超平面就是一條線,三維的就是面,總之分隔超平面的維度就是所給定的資料維度減一維。我們的目標是找到離分隔超平面最近的點,確保它們離分隔超平面的距離儘可能遠 。這裡點到分隔超平面的距離被稱為間隔。支援向量(support vector)就是離分隔超平面最近的那些點。
分隔超平面可通過如下線性方程描述:
其中為法向量,決定了超平面的方向; 為位移項,決定了超平面與點之間的距離。顯然,分隔超平面可由法向量和位移確定。(摘至西瓜書P121底部)
要計算點到分隔超平面的距離,就需要給出點到分隔面的法線或垂線的長度,該值為:
在Logistic迴歸一節介紹過分類函式Sigmoid,這裡也需要一個類似Sigmoid的分類函式f(),將這個分類函式作用於
這裡注意:為什麼我們可以令其大於等於或小於等於1呢?不應該是0麼?周老師在附註中解釋:若超平面能將樣本正確分類,則總存在縮放變換使得上式(3)成立,但並未展開。可參考李航老師書:係數縮放變換,則上述左側值相應變,但超平面不變。不妨令其為1。此段摘至:https://blog.csdn.net/niaolianjiulin/article/details/77744247
支援向量,即距離超平面最近的幾個訓練樣本點,使上式等號成立。兩個異類(一個正類一個負類)支援向量到超平面的距離之和為
稱為間隔(margin)(這是西瓜書上說的,和MLiA上說的點到分隔超平面的距離被稱為間隔,有點出入)。
想找到具有最大間隔的劃分超平面,也就是要找到能滿足式(3)中約束的引數和,使得最大,即
中的是label,MLiA上