ML筆記:分類算法之SVM

注:本文幾乎所有東西都不是原創,但鑑於來源複雜不易查明、僅作爲個人筆記查詢,故不再一一插入鏈接。如有侵權,立刪。

1. SVM是什麼?

Support Vector Machine。一個普通的SVM就是一條直線,用來完美劃分linearly separable的2類,即2分類。
但這有不是一條普通的直線,這是無數條可以分類的直線當中最完美的,因爲它喬海在2個類的中間,距離2個類的點都一樣遠。
而所謂的Support Vector就是距離分界線最近的(如下圖有填充色的蘋果和香蕉)。如果去到這些點,直線多半是要改變位置的,可以說這些vectors(點)Support(定義)了Machine(分類器/模型)。
所以說,只要找到了這些最靠近的點,就找到SVM了。
在這裏插入圖片描述
如果是高維的點,SVM的分界就從線變成了平面或者超平面。其實本至上都是一刀切兩塊,姑且彤彤叫做直線了。

2. SVM的優缺點
  • 優點:
  1. 可以解決小樣本情況下的ML問題
  2. 可以解決高維度問題,可以避免神經網絡結構選擇和局部極小點問題
  3. 可用於線性&非線性分類,泛化錯誤率低、計算開銷不大、結果容易解釋
  4. SVM是最好的現成的分類器,現成是指不加修改即可直接使用、並且能夠得到較低的錯誤率,SVM可以對訓練集之外的數據點做很好的分類決策
  • 缺點:
  1. 對參數調節和核函數的選擇敏感,對缺失值敏感;
  2. SVM算法對大規模訓練樣本難以實施。由於SVM是藉助二次規劃來求解支持向量,所涉及到的m階矩陣的計算(m爲樣本的個數)在m很大時,會耗費大連的機器內存和運算時間。(吐槽:這不就跟優點“計算開銷不大”衝突了?)
  3. 用SVM解決多分類問題存在困難,經典的SVM算法只給出了2分類的算法,而在數據挖掘的實際應用中,一般要解決多分類的分類問題。當然,可以通過多個2分類SVM的組合來解決。
  4. 是一個凸優化問題,所以求得的解一定是全局最優而不是局部最優
3. SVM的原理

一種說法是:SVM是建立在統計學習理論的VC維理論和結構風險最小原理基礎上的,根據有限的信息在模型的複雜性(即對特定訓練樣本的學習的Accruracy,參見混淆矩陣)和學習能力(即無錯誤的識別任意樣本的能力)之間尋求最佳折中,一起獲得最好的泛化能力/推廣能力。

所謂VC維:

  • 是對函數的一種度量,可以簡單的理解爲問題的複雜程度,VC維越高,問題就越複雜。
    正是因爲SVM關注的是VC爲,我們深入瞭解後能看到,SVM解決問題的時候,和樣本的維度是無關的(甚至樣本是上萬維的都可以,這使得SVM很適合用來解決文本分類的問題,當然,有這樣的能力也因爲引入了核函數
  • 將N個點進行分類,如分成2類,那麼有2^N 種方法,即可以理解爲2N個學習問題。若存在一個假設H,能準確無誤地把2N種問題分類,那麼這些點的數量N,就是H的VC維(如3個點在平面上,其線性劃分的VC維是3而不大於3,因爲只有3個樣本點)。
4. SVM的主要應用場景&研究熱點
  1. 主要應用於分類問題中的模式識別領域的文本識別、中文分類、人臉識別等;同時也應用到信息過濾等方面
  2. 當前的研究熱點主要是對SVM中算法的優化:
    2.1 包括解決SVM中二次規劃求解問題、對大規模SVM的求解問題、對SVM中QP問題的求解等
    2.2 另外就是如何更好地構造基於SVM的多分類器、如何提高SVM的歸納能力和分類速度等;
    2.3 如何根據實際問題確定核函數也是一個重要的熱點(核函數即是線性不可分的轉化爲高維線性可分的問題,再進行線性分類);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章