1、定義
支持向量機(Support Vector Machine,SVM)
支持(support)向量(vector)指的就是樣本點機器(Machine)
支持向量機它是針對線性可分情況進行分析的,對於線性不可分的情況,它會將向量(樣本)映射到一個更高維的空間裏,在這個更高維空間裏建立有一個最大間隔超平面,進行線性可分。
通俗來講,它是一種二類分類模型,目的就是用一個分離器(超平面)最優的將空間中的樣本點一分爲二。
SVM 的主要思想可以概括爲兩點:
1、它是針對線性可分情況進行分析,對於線性不可分的情況,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉化爲高維特徵空間,使其線性可分,從而使得高維特徵空間採用線性算法對樣本的非線性特徵進行線性分析成爲可能;
2、 它基於結構風險最小化理論之上在特徵空間中建構最優分割超平面,使得學習器得到全局最優化,並且在整個樣本空間的期望風險以某個概率滿足一定上界。
支持向量與間隔
什麼是間隔?
指的是一個 訓練樣本點 和 決策面 之間的間隔最小間隔 最大化
最小間隔是所有樣本點到決策面之間最近的距離r(也就是離決策面最近的那個樣本點到決策面的距離r)
最小間隔r越大,那麼其泛化誤差就越小,模型就越好
給定的訓練樣本集D={ ,… }
在上圖中,我們想將樣本分爲兩類。觀察圖可知。加粗的那根線是最理想的,因爲這根線離所有樣本點最遠,實現了 最小間隔 最大化,對訓練樣本局部擾動的容忍性最好。既這根加粗的線就是最優分割線。
將二維平面拓展到3維空間
如果我們在一個3維立體空間中。想將這個立體空間中的樣本一分爲二,則需要用一個平面(超平面)。
例子(知乎上某位大神舉得例子,覺得寫的特別好)
故事是這樣子的:
在很久以前的情人節,大俠要去救他的愛人,但魔鬼和他玩了一個遊戲。
魔鬼在桌子上似乎有規律放了兩種顏色的球,說:“你用一根棍分開它們?要求:儘量在放更多球之後,仍然適用。”
於是大俠這樣放
然後魔鬼,又在桌上放了更多的球,似乎有一個球站錯了陣營。
支持向量機(SVM)就是試圖把棍放在最佳位置,好讓在棍的兩邊有儘可能大的間隙。(最小間隔r最大化)
現在即使魔鬼放了更多的球,棍仍然是一個好的分界線。
然後,在SVM 工具箱中有另一個更加重要的訣竅。 魔鬼看到大俠已經學會了一個訣竅,於是魔鬼給了大俠一個新的挑戰。
現在,大俠沒有棍可以很好幫他分開兩種球了,現在怎麼辦呢?當然像所有武俠片中一樣大俠桌子一拍,球飛到空中。然後,憑藉大俠的輕功,大俠抓起一張紙,插到了兩種球的中間。
現在,從魔鬼的角度看這些球,這些球看起來像是被一條曲線分開了。
(把這些球叫做 「data」,把棍子 叫做 「classifier」, 最大間隙trick 叫做「optimization」, 拍桌子叫做「kernelling」, 那張紙叫做「hyperplane」。)
2、優缺點
優點
§ 可以解決高維問題,即大型特徵空間;
§ 能夠處理非線性特徵的相互作用;
§ 無需依賴整個數據;
§ 可以提高泛化能力;
缺點
§ 當觀測樣本很多時,效率並不是很高;
§ 對非線性問題沒有通用解決方案,有時候很難找到一個合適的核函數;
§ 對缺失數據敏感;
3、應用場景
適合於數據量比較小、有多個特徵的數據的情況進行分類,支持向量機擅長在變量 X 與其它變量之間進行二元分類操作,無論其關係是否是線性的
§ 價格估算
§ 新聞分類
§ 手寫識別
§ 垃圾郵件分類器
§ 入侵檢測系統中的網絡行爲