背景
支持向量機(SVM)背后的數學知識比較復雜,之前嘗試過在網上搜索一些資料自學,但是效果不佳。所以,在我的數據挖掘工具箱中,一直不會使用SVM這個利器。最近,台大林軒田老師在Coursera上的機器學習技法課程上有很詳細的講授SVM的原理,所以機會難得,一定要好好把握這次機會,將SVM背后的原理梳理清楚並記錄下來。這篇文章總結第一講linear hard SVM的相關內容。
最好的分割線
之前有講過PLA,即在線性可分的數據中,找到一條線,能夠區分開正負樣本,如下所示:
上面三條線,都是PLA的解,但是哪條才是最好的呢?憑直覺而言,最右邊是最好的,因為右邊第三條對噪聲的容忍度最高。
上圖中灰色區域是噪聲,區域越大,噪聲越大。可以發現,最右邊可以容忍的噪聲是最大。現在是以點的視角來觀察,下面以線的視角觀察,
同樣的,最右邊的線擴展后得到的"墊子"最厚。"墊子"的厚度通常叫做margin(邊緣)。墊子擴展到最近的正負樣本就停止擴展,這些在墊子邊緣上的正負樣本叫做支持向量(每個樣本就是一個向量)。
問題來了
知道了支持向量機的定義和優點后,那么問題來了,我們要解一個什么問題?
形式化的問題定義如下
如果符合上面條件的w(平面法向量)和b(平面截距)存在,由於平面公式可以伸縮(即wTx+b=0與3wTx+3b=0表示同一個平面),所以總可以找到一組w*和b*,使得min y(w*x+b*) = 1,那么有
經過上面的平面縮放變化,問題可以簡化為如下形式
是不是看起來簡單多了。
二次規划
為了進一步簡化計算,將目標函數經過一番變化,可以得到如下利於優化的形式
這個問題形式和二次規划(線性規划的親戚,)一致,所以可以使用二次規划的方法求解。二次規划的一般形式如下:
將linear hard SVM的求解公司套用QP一般形式,接下來就可以通過任何實現QP解法的工具計算求解,這里略去具體的變量映射關系,有興趣的讀者可以嘗試。對於非線性問題,可以通過對x做二次轉化或其他轉化,然后求解。
VC維度
相比較PLA的平面,linear hard SVM得到的平面結果更苛刻,
由於有"厚墊子",linear hard SVM不能shatter任意3個inputs,這說明有更少的dichotomies,更小的VC維度,也就有更好的泛化效果。同時,如果使用特征轉換,可以使linear hard SVM進行一些更精細的分類。
總結
Linear hard SVM的解法中需要訓練數據線性可分,然后通過縮放平面和等價轉換,將原始問題轉成QP問題求解。數據線性可分在實際情況中很難出現,所以linear hard SVM的應用價值比較有限。同時,在特征轉換時,將原始數據映射到其他空間的計算無法省略(好像是廢話)。接下來課程中,會使用一些更有趣的方法解決這兩個問題,敬請期待。