背景 機器學習
支持向量機(SVM)背後的數學知識比較複雜,以前嘗試過在網上搜索一些資料自學,可是效果不佳。因此,在個人數據挖掘工具箱中,一直不會使用SVM這個利器。最近,臺大林軒田老師在Coursera上的機器學習技法課程上有很詳細的講授SVM的原理,因此機會可貴,必定要好好把握此次機會,將SVM背後的原理梳理清楚並記錄下來。這篇文章總結第一講linear hard SVM的相關內容。 函數
最好的分割線 工具
以前有講過PLA,即在線性可分的數據中,找到一條線,可以區分開正負樣本,以下所示: 學習
上面三條線,都是PLA的解,可是哪條纔是最好的呢?憑直覺而言,最右邊是最好的,由於右邊第三條對噪聲的容忍度最高。 優化
上圖中灰色區域是噪聲,區域越大,噪聲越大。能夠發現,最右邊能夠容忍的噪聲是最大。如今是以點的視角來觀察,下面以線的視角觀察, spa
一樣的,最右邊的線擴展後獲得的"墊子"最厚。"墊子"的厚度一般叫作margin(邊緣)。墊子擴展到最近的正負樣本就中止擴展,這些在墊子邊緣上的正負樣本叫作支持向量(每一個樣本就是一個向量)。 blog
問題來了 input
知道了支持向量機的定義和優勢後,那麼問題來了,咱們要解一個什麼問題? 數學
形式化的問題定義以下 數據挖掘
若是符合上面條件的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的應用價值比較有限。同時,在特徵轉換時,將原始數據映射到其餘空間的計算沒法省略(好像是廢話)。接下來課程中,會使用一些更有趣的方法解決這兩個問題,敬請期待。