前言
眾所周知 svm 是非常強大的一種分類演算法,有著媲美神經網路的分類效果,實現過程卻簡單得多。受限於我的能力,這篇文章不會系統地介紹 svm(因為我並不是線性代數、凸優化等方面的專家),而是以乙個學習者的角度描述 svm 產生的過程,由於內容較長,計畫分成三到四篇
乙個好的分類是怎麼樣的
圖中的兩組資料,顯然它們是線性可分(linear separable)的,圖里給出的三條分界線都可以準確區分這兩類資料,它們是不是一樣好?如果不是,哪一條看起來更加合適?
直覺告訴我們是 a。相比之下,b 和 c 離個別點太近了,我們很難拍著胸脯說「這個點在分界線下面,所以絕對是 x",因為分界線稍微挪一挪就可以改變這些點的屬性,我們想要的是乙個相對自信的分界線,使靠近分界線的點與分界線的距離足夠大,上圖中的分界線 a 就符合我們的需求。
ps. 這裡所說的分界線嚴格來說是 decision boundary,decision boundary 在二維空間是一條線,在三維空間是乙個平面,更高維的空間裡稱作超平面,為了方便本文都用分界線來代表 decision boundary。
進入向量的世界
你或許已經注意到 svm 的全稱是 support vector machine(支援向量機),在推導 svm 公式過程中,我們幾乎都是在和向量打交道。剛接觸 svm 的時候我對這個名字非常詫異,svm 很強是沒錯,但是名字也太「隨意」了吧?希望寫完這篇文章以後我能理解為什麼這種演算法叫做支援向量機。
如果你之前沒有接觸過向量,建議花乙個小時左右的時間熟悉一下向量的概念和基本性質。我們先把空間上的點用向量來表示(以原點為起點的向量):
雖然寫成了向量的形式,其實並沒有什麼大不了的,我們可以把它和初中時候學過的直線表示式聯絡起來:
對於 svm 來說僅僅這樣是不夠的,還記得嗎我們要修一條路出來,我們得確保在一條足夠寬的路裡面沒有資料點:
這樣前面的式子就可以寫成更為簡潔的形式:
什麼是支援向量
這是乙個基於 kkt 條件的二次規劃問題,優化原理的內容超出了這篇文章的範疇,在這裡我們只要知道拉格朗日乘數法可以求得這個最優解,引入新的係數αi :
令以上兩式為0,我們可以得到:
原文發布時間為:2018-03-17
資料派thu
支援向量機(SVM)公式推導
假設一堆訓練資料的正負樣本標記為 假設有乙個超平面h 可以通過此線性方程劃分,同時存在兩個平行於 h的超平面h1和 超平面h 能夠正確分類,也就是滿足如下約束 即 離 h最近的正負樣本剛好分別落在h1和 h2上使等號成立,它們就是支援向量。而超平面h1和 h2的距離可知為 注 線到線的距離公式求得 ...
支援向量機(SVM)公式整理
支援向量機可以分為三類 任務 尋找一條與所有支援向量距離最遠的決策邊界,這條決策邊界就是 0 w t x b 即 w t x i b 0 y i 0 w t x i b 0 y i 0 所以問題可以描述為 max margin x,b qquad s.t.y i w t b 0 margin w,b...
支援向量機(一)
本篇是學習svm的初學講義,希望能夠對大家有所幫助。svm涉及到很多拉格朗日對偶等最優化知識,強烈推薦大家學習 最優化計算方法 不然理解svm會遇到很多困難。學習之前強烈推薦先玩一玩林智仁的svm toy.exe,對理解svm很有幫助,鏈結在 好了,接下來我們開始svm的學習。在本文中,會盡量避免一...