EdX-Columbia機器學習課第11講筆記:最大間隔分類器和SVM
(按1:其實這個系列很早就寫好了,畢竟是這門課第一期學員……但是從作業部落往這兒搬太費勁,知乎專欄不支持markdown有點讓人抓狂,公式一點點轉很麻煩……有沒有簡便方法)
(按2:這一講很精彩。白大哥從凸包的角度引入最大間隔簡直是耳目一新。當初記筆記的時候沒有放圖,這一章結合圖看效果更佳)
最大間隔分類器
感知機只選擇第一個完全分離開樣本的超平面(如果樣本線性可分)。所有可以分離開樣本的超平面對於感知機來講都是同樣好的。而最大間隔分類器的目標是減少預測誤差,使得每個類別中離超平面最近的那個點與超平面的距離盡量大。這個距離叫做間隔(margin)。如果我們知道兩個類別應該滿足什麼分布,那麼可以使用貝葉斯分類器;但是如果我們不對分布進行任何假設,那麼最大間隔分類器應該是最好的
最大間隔分類器實際上只由數據集中最「靠外」的點決定,內部點不能決定。從幾何角度看,可以用一個**最小凸集**把每個類中的所有點包含起來。這個最小凸集稱作**凸包**。實際上,對凸包內(包括邊界上)的任何一個點,該點都可以被表示成該數據集所有點的一個加權平均數,即假設為已知的數據點,有分類超平面的間隔是它到任何類中任意一點距離的最小值(也就是它到任何類其所對應的凸包距離的最小值)。如果我們最大化這個間隔,那麼實際上就是把放在了兩個凸包的正中間。問題是,如何找到滿足要求的這個
SVM
SVM的問題實際上就是,對於個線性可分的點,且,求解
仍然是從幾何的意義上講,滿足要求的可以這麼尋找:由之前所述,兩個類的數據點實際上形成了兩個凸包。可以從這兩個凸包上各找一個點,使得它們之間的距離最短。將這兩個點用線連接,在線的中點處做一個超平面垂直於這條線,這個超平面就是最優的。考慮之前凸包上和凸包內所有點都可以用已知數據集所有點的加和表示,記兩個凸包分別為和,則實際上我們是要找到兩個權重向量和以最小化
之前引入的問題稱為原始問題,可以引入拉格朗日乘子,則有目標是對和最小化,對最大化因此有可以看到,優化目標和前面講的求凸包最近兩個點之間的最小距離一致
由於垂直於,與凸包間最近兩點連線方向一致(更嚴謹地,在一條直線上,但是方向指向由正類樣本決定),因此實際上最小化也是在最小化。此外,由前面的推導,也有軟間隔SVM與核SVM
如果數據不是完全線性可分的怎麼辦?這個時候我們可以通過允許訓練數據在分類超平面「錯的」一邊來放鬆之前的限制(不過需要付出一定的代價)。因此我們可以引入**鬆弛變數**,約束條件變為
當時,該點比支持向量(這裡沒講但是概念懂的)更靠近超平面;當時,該點在超平面的另一邊再引入對高維空間的映射函數,則新的求解問題變成了如果,則對錯分的容忍度變大,反之則表示不允許錯分,因為意味著(通常使用交叉驗證來選擇)其對偶問題為,以每個最大化,以最小化
可以解得將和代回,可知對偶問題為其中可以用核函數替換分類預測變為求注意到對於大多數,有,因此實際上預測的時候只會用到那些不為0的點,稱這些點為**支持向量**推薦閱讀:
※【學界】Mirror descent: 統一框架下的一階演算法
※計算與認知 | 枝蔚的論文庫0326-更新完
※使用LibSVM進行分類的注意事項
※Tensorflow VS PMML
※cs231n assignment1