支持向量機SVM算法介紹

支持向量機SVM算法介紹

1. 背景:

     1.1 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出
     1.2 目前的版本(soft margin)是由Corinna Cortes 和 Vapnik在1993年提出,並在1995年發表
     1.3 深度學習(2012)出現之前,SVM被認爲機器學習中近十幾年來最成功,表現最好的算法
2. 機器學習的一般框架:
     訓練集 => 提取特徵向量=> 結合一定的算法(分類器:比如決策樹,KNN)=>得到結果
3. 介紹:
     3.1 例子:

兩類?哪條線最好?
 3.2 SVM尋找區分兩類的超平面(hyper plane), 使邊際(margin)最大

       總共可以有多少個可能的超平面?無數條
               如何選取使邊際(margin)最大的超平面 (Max Margin Hyperplane)?
               超平面到一側最近點的距離等於到另一側最近點的距離,兩側的兩個超平面平行

3. 線性可區分(linear separable) 線性不可區分 (linear inseparable) 

4. 定義與公式建立
          超平面可以定義爲:
               W: weight vectot,   , n 是特徵值的個數
               X: 訓練實例
               b: bias

4.1 假設2維特徵向量:X = (x1, X2)
                把 b 想象爲額外的 wight
                超平面方程變爲: 

                所有超平面右上方的點滿足:
                所有超平面左下方的點滿足:
 
               調整weight,使超平面定義邊際的兩邊:
               綜合以上兩式,得到: 
              所有坐落在邊際的兩邊的的超平面上的被稱作”支持向量(support vectors)"
               分界的超平面和H1或H2上任意一點的距離爲 :1/||W||  (i.e.: 其中||W||是向量的範數(norm))     
                              
                所以,最大邊際距離爲:2/||W||

5. 求解
     5.1  SVM如何找出最大邊際的超平面呢(MMH)?              
              利用一些數學推倒,以上公式 (1)可變爲有限制的凸優化問題(convex quadratic optimization)
               利用 Karush-Kuhn-Tucker (KKT)條件和拉格朗日公式,可以推出MMH可以被表示爲以下“決定邊     
               界 (decision boundary)”    

都是單一數值型參數,由以上提到的最有算法得出 L 是支持向量點的個數.
5.2  對於任何測試(要歸類的)實例,帶入以上公式,得出的符號是正還是負決定。
6. 例子:



上述例子代碼實現見相關博客。

------------------- 線性不可分的情況 ------------------------------
1.SVN算法特性
1.1 訓練好的模型的算法複雜度是由支持向量的個數決定的,而不是由數據的維度決定的。所以SVM不太容易產生overfitting
     1.2 SVM訓練出來的模型完全依賴於支持向量(Support Vectors), 即使訓練集裏面所有非支持向量的點都被去除,重複訓練過程,結果仍然會得到完全一樣的模型。
     1.3 一個SVM如果訓練得出的支持向量個數比較小,SVM訓練出的模型比較容易被泛化。
2.線性不可分的情況 (linearly inseparable case)
2.1 數據集在空間中對應的向量不可被一個超平面區分開
2.2 兩個步驟來解決:
2.2.1 利用一個非線性的映射把原數據集中的向量點轉化到一個更高維度的空間中
2.2.2 在這個高維度的空間中找一個線性的超平面來根據線性可分的情況處理












發佈了102 篇原創文章 · 獲贊 30 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章