機器學習演算法筆記之5:支援向量機SVM
一、概述
支援向量機(Support VectorMachine,SVM)的基本模型是定義在特徵空間上間隔最大的線性分類器,它是一種二分類模型,當採用了適當的核技巧後,支援向量機可以用於非線性分類。
(1)線性可分支援向量機(硬間隔支援向量機):當訓練資料線性可分時,通過硬間隔最大化,可以學得一個線性可分支援向量機。
(2)線性支援向量機(軟間隔支援向量機):當訓練資料近似線性可分時,通過軟間隔最大化,學得一個線性支援向量機。
(3)非線性支援向量機:當訓練資料不可分時,通過使用核技巧及軟間隔最大化,可以學得一個非線性支援向量機。
線上性可分的情況下,訓練資料集的樣本點中與分離超平面距離最近的樣本點的例項成為支援向量,支援向量是使約束條件等號成立的點。
從表面上看,我們優化的物件似乎是這個決策面的方向和位置。但實際上最優決策面的方向和位置完全取決於選擇哪些樣本作為支援向量。
從圖中可以看到,在間隔邊界中間沒有例項,形成了一個間隔帶,分離超平面與它們平行且位於它們中央。間隔帶的寬度稱為間隔(margin),這依賴於分割超平面的法向量w(歸一化形式下),等於 。在決定分割超平面時只有支援向量起作用。
1. KKT條件
對於不等式約束條件g(x)<=0的情況,如圖所示,最優解所在的位置x*有兩種可能,或者在邊界曲線g(x)=0上或者在可行解區域內部滿足不等式g(x)<0的地方。
第一種情況:最優解在邊界上,就相當於約束條件就是g(x)=0。參考圖下圖,注意此時目標函式f(x)的最優解在可行解區域外面,所以函式f(x)在最優解x*附近的變化趨勢是“在可行解區域內側較大而在區域外側較小”,與之對應的是函式g(x)在可行解區域內小於0,在區域外大於零,所以在最優解x*附近的變化趨勢是內部較小而外部較大。這意味著目標函式f(x)的梯度方向與約束條件函式g(x)的梯度方向相反。因此根據公式 ,可以推斷出引數λ>0。
不等式約束條件下最優解位置分佈的兩種情況
第二種情況:如果在區域內,則相當於約束條件沒有起作用,因此拉格朗日函式 中的引數λ=0。整合這兩種情況,可以寫出一個約束條件的統一表達。
其中第一個式子是約束條件本身。第二個式子是對拉格朗日乘子λ的描述。第三個式子是第一種情況和第二種情況的整合:在第一種情況裡,λ>0,g(x)=0;在第二種情況下,λ=0,g(x)<0。所以無論哪一種情況都有λg(x)=0。上面公式就稱為Karush-Kuhn-Tucker條件,簡稱KKT條件。
2. 合頁損失函式
對於線性支援向量機原始最優化問題,等價於最優化問題
目標函式第一項是經驗損失或經驗風險, ,稱為合頁損失函式(hinge loss function),下標“+”表示 ,第二項是正則化項。
圖中虛線表示的是感知機的損失函式。
二、線性可分支援向量機學習演算法
1. 線性可分支援向量機學習演算法——最大間隔法
輸入:線性可分訓練資料集 ,其中, , ,i=1,2,…,N;
輸出:最大間隔分離超平面和分類決策函式。
(1)構造並求解約束最優化問題:
求得最優解 。這也是支援向量機的基本型。
(2)由此得到分離超平面
分類決策函式
2. 學習的對偶演算法
為了求解上述線性可分支援向量機學習演算法的最優化問題,將它作為原始最優化問題,應用拉格朗日對偶性,通過求解對偶問題(dual problem)得到原始問題(primal problem)的最優解,這就是線性可分支援向量機的對偶演算法(dual algorithm)。
首先引入拉格朗日函式(Lagrangefunction),對原始問題中的每一個不等式約束引進拉格朗日乘子αi>=0,定義拉格朗日函式:
其中, 為拉格朗日乘子向量。
根據拉格朗日對偶性。原始問題的對偶問題是極大極小問題:
求解對偶問題就得到對偶最優化問題:
αi>=0,i=1,2,…,N
求解上述最優化問題得到最優解
計算 ,
將結果帶入至分隔超平面方程和分類決策函式函式即可。
三、線性支援向量機與軟間隔最大化
將線性可分支援向量機學習方法擴充套件到線性不可分問題,需要修改硬間隔最大化成為軟間隔最大化。在假設訓練資料集不可分的情況下,訓練資料中有一些特異點(outlier),將這些特異點去除後,剩下的樣本點組成的集合是線性可分的。線性不可分情況下,某些樣本點不滿足約束條件 ,為了解決這個問題,我們引入鬆弛變數,使函式間隔加上鬆弛變數大於等於1,對應的每個鬆弛變數增加一個代價。
得到軟間隔最大化的線性不可分的線性支援向量機(線性支援向量機)的學習問題變為凸二次規劃問題(原始問題):
求解得到分離超平面和分類決策函式的表示式。
四、非線性支援向量機與核函式
1. 非線性分類問題
對給定的訓練資料集,如果能用一個超曲面將正負例正確分開,則稱這個問題為非線性可分問題。
非線性問題往往不好求解,我們採取的方法是進行一個非線性變換,將非線性問題變換為線性問題,通過解變換後的線性問題的方法求解原來的非線性問題。
用線性分類方法求解非線性分類問題分為兩步:(1)使用一個變換將原空間的資料對映到新空間;(2)在新空間裡用線性分類學習方法從訓練資料中學習分類模型。核技巧就屬於這樣的方法。
2. 核函式
核技巧的想法是,在學習與預測中只定義核函式,而不顯式地定義對映函式。線上性支援向量機的對偶問題中,無論是目標函式還是決策函式都只涉及輸入例項與例項之間的內積,故將內積表示式用核函式來代替,這就等價於經過對映函式將原來的輸入空間變換到一個新的特徵空間,在新的特徵空間裡學習線性支援向量機。當對映函式是非線性函式時,學習到的含有核函式的支援向量機是非線性分類模型。學習是隱式地在特徵空間進行的,不需要顯式地定義特徵空間和對映函式,這樣的技巧稱為核技巧。在實際應用中,往往依賴領域知識直接選擇核函式,核函式的選擇的有效性需要通過實驗驗證。
相關文章
- 機器學習:支援向量機(SVM)機器學習
- 機器學習——支援向量機(SVM)機器學習
- 機器學習——支援向量機SVM(一)機器學習
- 【Python機器學習實戰】感知機和支援向量機學習筆記(三)之SVM的實現Python機器學習筆記
- 人工智慧-機器學習-支援向量機SVM人工智慧機器學習
- 機器學習基礎專題:支援向量機SVM機器學習
- 【機器學習】支援向量機(個人筆記)機器學習筆記
- OpenCV筆記(3)實現支援向量機(SVM)OpenCV筆記
- 吳恩達機器學習筆記 —— 13 支援向量機吳恩達機器學習筆記
- 支援向量機(SVM)
- 《吳恩達機器學習》學習筆記007_支援向量機吳恩達機器學習筆記
- Python機器學習筆記:SVM(1)——SVM概述Python機器學習筆記
- 分類演算法-支援向量機 SVM演算法
- 支援向量機(SVM)之硬閾值
- Python機器學習筆記:SVM(3)——證明SVMPython機器學習筆記
- SVM——支援向量機(完整)
- SVM_支援向量機
- 《機器學習_07_01_svm_硬間隔支援向量機與SMO》機器學習
- 機器學習基礎篇:支援向量機(SVM)理論與實踐機器學習
- 機器學習(四):通俗理解支援向量機SVM及程式碼實踐機器學習
- 機器學習之支援向量機的超平面機器學習
- 感知機與支援向量機 (SVM)
- 機器學習之-搞定支援向量機(SVM)【人工智慧工程師--AI轉型必修課】機器學習人工智慧工程師AI
- Python機器學習筆記——One Class SVMPython機器學習筆記
- Python機器學習筆記:SVM(2)——SVM核函式Python機器學習筆記函式
- 演算法金 | 再見,支援向量機 SVM!演算法
- SVM 支援向量機演算法-原理篇演算法
- SVM 支援向量機演算法-實戰篇演算法
- 機器學習之支援向量與間隔機器學習
- 對SVM支援向量機(1)
- [譯] 支援向量機(SVM)教程
- 【機器學習】支援向量機分類機器學習
- 《機器學習_07_03_svm_核函式與非線性支援向量機》機器學習函式
- 機器學習之支援向量機原理和sklearn實踐機器學習
- 吳恩達《Machine Learning》精煉筆記 7:支援向量機 SVM吳恩達Mac筆記
- 監督學習之支援向量機
- 支援向量機(Support Vector Machine,SVM)—— 線性SVMMac
- Python數模筆記-Sklearn(5)支援向量機Python筆記