標籤:

來聊聊支持向量機

上周公司的機器學習課程講了一個非常實在的內容,來自密歇根大學的AP王傑(Jie Wang)分享了他的研究成果Scaling Up Sparse Support Vector Machine by Simultaneous Feature and Sample Reduction。於是我就有了整理一下自己腦海里關於SVM的思路的想法。這篇文章所有的內容來自於八月初我在小組內所做的數據挖掘演算法分享的ppt內容,圖片大多來自論文、Andrew Ng的機器學習課程,以及少量的技術博客。

首先我們要考慮的是一個二分類問題:

從圖中可以看出可以有很多種方式來將正負樣本分開,但是為了將訓練樣本很好的分開但同時又能夠保證模型良好的泛化能力,顯而易見我們會選擇圖中的粗線來作為decision boundary,我們稱他為超平面left( w,b 
ight) 。至於這一部分的直觀理解請移步:支持向量機(SVM)是什麼意思? - 人工智慧

而若想讓超平面left( w,b 
ight) 將樣本正確分類,則需要:

ps:知乎的公式編輯器似乎不能編輯這種公式所以只好截圖了

而從公式上面的圖片可以看出,畫圓圈的正負樣本使得上述表達式的等號成立,也就是說這是我們的分類可以接受的「底線」,這兩條「底線」也被成為支持向量。而兩條支持向量之間的間隔中不能有任何的樣本點,有一種說法是將這種間隔成為「硬間隔」。

所以這個時候模型的優化目標就變成了使得間隔最大,這樣就能得出模型額表達式了:

而為了後續的數學推導,可以將上式等價為:

這就是支持向量機的基本型,因此支持向量機也被稱為「最大間隔分類器」。模型的數學求解再次不再贅述,有興趣可以翻看周志華老師編寫的《機器學習》第六章。

而更多的情況下,我們面臨的是更加複雜的情況(即樣本不是現行可分的):

如果在原始樣本空間中,無法找到一個超平面將樣本點劃分為兩類,則可以將原始樣本空間映射至高維空間中,就一定能找到一個超平面能夠正確劃分兩類樣本點,如下圖將二維樣本空間映射至三維空間,則成功地尋找到一個超平面將兩類樣本點劃分開。

這個phi left( x 
ight) 則被稱作是SVM的核。核的種類有很多種:線性核、高斯核、sigmoid核等。至於核的選擇仍然是一個未決的問題,更多的時候是通過經驗來選擇,在這中間也存在著不少的tricks。如果想要深入學習SVM,可以在coursera上學習台大林軒田老師的《機器學習技法》,對於支持向量機的講授非常的全面。

而若想真正深入的理解SVM,則需要一些凸優化的知識,最經典的凸優化的教程是由stanford的Boyd教授主編的ConvexOptimization,在Stanford的在線課程學習網站上,有Boyd講授的ConvexOptimization在線課程,使用的課本正是他自己編寫的ConvexOptimization。

然後再來甩一個鏈接,這個視頻通過動畫的方式來直觀呈現了SVM的訓練過程:SVM直觀理解。

以上是將我上次的分享內容和ppt做了一個綜合的呈現,就當做是一個簡單的記錄吧,一直覺得自己撰寫文章的水平很低,還求聚聚們輕噴。

最後關注了我的專欄但是又看不懂這篇文章的朋友我錯了下次我一定好好說話,認認真真的水一發(逃


推薦閱讀:

SVM的核函數如何選取?
支持向量機嶺回歸和分類凸損失
kkt 條件
為什麼svm不會過擬合?

TAG:機器學習 | SVM |