《機器學習實戰(zhàn)》筆記(六):Ch6 - 支持向量機

第六章 支持向量機(代碼)

  • SVM算法優(yōu)缺點

    • 優(yōu)點:泛化錯誤率低,計算開銷不大,結(jié)果易解釋。

    • 缺點:對參數(shù)調(diào)節(jié)和和核函數(shù)的選擇敏感,原始分類器不加修改僅適用于處理二分類問題。

    • 范圍:數(shù)值型和標稱型數(shù)據(jù)。

  • SVM分類(Tip:不講非線性支持向量機)

    • 線性支持向量機

      • 求解線性支持向量機的過程是凸二次規(guī)劃問題,所謂凸二次規(guī)劃問題,就是目標函數(shù)是凸的二次可微函數(shù),約束函數(shù)為仿射函數(shù)(滿足f(x)=a*x+b,a,x均為n為向量)。而我們說求解凸二次規(guī)劃問題可以利用對偶算法--即引入拉格朗日算子,利用拉格朗日對偶性將原始問題的最優(yōu)解問題轉(zhuǎn)化為拉格朗日對偶問題,這樣就將求w,b的原始問題的極小問題轉(zhuǎn)化為求alpha(alpha>=0)的對偶問題的極大問題,即求出alpha,在通過KKT條件求出對應的參數(shù)w,b,從而找到這樣的間隔最大化超平面,進而利用該平面完成樣本分類
    • 近似線性支持向量機

- 當數(shù)據(jù)集并不是嚴格線性可分時,即滿足絕不部分樣本點是線性可分,存在極少部分異常點;這里也就是說存在部分樣本不能滿足約束條件,此時我們可以引入松弛因子,這樣這些樣本點到超平面的函數(shù)距離加上松弛因子,就能保證被超平面分隔開來;當然,添加了松弛因子sigma,我們也會添加對應的代價項,使得alpha滿足0=<alpha<=C

  • SMO算法

    • SMO是一種用于訓練SVM的強大算法,它將大的優(yōu)化問題分解為多個小的優(yōu)化問題來進行求解。而這些小優(yōu)化問題往往很容易求解,并且對它們進行順序求解和對整體求解結(jié)果是一致的。在結(jié)果一致的情況下,顯然SMO算法的求解時間要短很多,這樣當數(shù)據(jù)集容量很大時,SMO就是一致十分高效的算法

    • SMO算法的目標是找到一系列alpha和b,而求出這些alpha,我們就能求出權(quán)重w,這樣就能得到分隔超平面,從而完成分類任務

    • SMO算法的工作原理是:每次循環(huán)中選擇兩個alpha進行優(yōu)化處理。一旦找到一對合適的alpha,那么就增大其中一個而減少另外一個。這里的"合適",意味著在選擇alpha對時必須滿足一定的條件,條件之一是這兩個alpha不滿足最優(yōu)化問題的kkt條件,另外一個條件是這兩個alpha還沒有進行區(qū)間化處理

    • 對于SMO算法編寫,我們采用由簡單到復雜的方法,層層遞進,完成最終的SMO算法實現(xiàn),最后通過實際的用例對SVM模型進行訓練,并驗證準確性

    • 簡化版SMO算法

      簡化版SMO算法,省略了確定要優(yōu)化的最佳alpha對的步驟,而是首先在數(shù)據(jù)集上進行遍歷每一個alpha,再在剩余的數(shù)據(jù)集中找到另外一個alpha,構(gòu)成要優(yōu)化的alpha對,同時對其進行優(yōu)化,這里的同時是要確保公式:Σαilabel(i)=0。所以改變一個alpha顯然會導致等式失效,所以這里需要同時改變兩個alpha。*

  • 核函數(shù)

    核函數(shù)的目的主要是為了解決非線性分類問題,通過核技巧將低維的非線性特征轉(zhuǎn)化為高維的線性特征,從而可以通過線性模型來解決非線性的分類問題。

  • 例子:手寫識別

    相較于KNN算法,盡管KNN也能取得不錯的效果;但是從節(jié)省內(nèi)存的角度出發(fā),顯然SVM算法更勝一籌,因為其不需要保存真?zhèn)€數(shù)據(jù)集,而只需要其作用的支持向量點,而取得不錯的分類效果

內(nèi)核模式,設(shè)置 訓練錯誤率(%) 測試錯誤率(%) 支持向量數(shù)
rbf,0.1 0 52 402
rbf,5 0 3.2 402
rbf,10 0 0.5 99
rbf,50 0.2 2.2 41
rbf,100 4.5 4.3 26
Linear 2.7 2.2 38

由上圖可以看出,σ值在取10時取得了最好的分類效果,這也印證了我們上面的敘述。即對于固定的數(shù)據(jù)集,存在最優(yōu)的支持向量個數(shù),使得分類錯誤率最低。支持向量的個數(shù)會隨著σ值的增大而逐漸減少,但是分類錯誤率確實一個先降低后升高的過程。即最小的分類錯誤率并不意味著最少的支持向量個數(shù)。

  • 小節(jié)

    支持向量機是一種分類器,它具有良好的學習能力,并且學到的東西具有很好的拓展性,SMO解決了SVM訓練速度慢的原因。

    核函數(shù)會將數(shù)據(jù)從一個低維空間映射到一個高維空間,可以將一個在低維空間中的非線性問題轉(zhuǎn)化成為高維空間下的線性問題來求解

    支持向量機在解決多類問題的時候,需要額外的方法來對其進行擴展,SVM效果也對優(yōu)化參數(shù)和所用核參數(shù)中的參數(shù)敏感。


代碼托管見Github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容