關於懲罰因子和核函數的思考

最初理解的SVM是從最大化分類間隔提出的,直觀的理解,最好的分類界面應該是使分割的類別越遠越好,經過得到分類間隔轉換成對偶問題,利用SMO算法解決。我理解的SVM的優點在於:html

1.        對於二分類線性可分問題能夠直接分類;算法

2.        對於多分類線性可分問題能夠轉換成一對一的二分類問題(不能算優點)函數

3.        對於線性不可分問題經過特徵映射在新的映射空間下線性可分的問題;測試

4.        對於映射到高維或者無窮維能夠經過核技巧解決映射的維數災難問題。url

基於以上優點,主要探討了不一樣的C和不一樣的核函數對SVM二分類問題的影響。htm

對於懲罰因子C的做用,是用來權衡損失和分類間隔的權重,懲罰因子C越大,代表重視損失,若是C選取的很是大,那麼若是有分錯的樣本,對其的懲罰很是大,將致使出現硬間隔的效果。不斷增大C的值,總能實現將樣本點徹底正確的分類,可是這樣將會致使過擬合,泛化能力不夠。blog

經過LibSVM自帶的svm-toy能夠直觀的看出隨着C的增大,對分類效果的影響。實驗中,在考慮懲罰因子C的影響的時候,選取的核函數爲RBF核,C的值依次爲十、2五、50、100。get

關於懲罰因子和核函數的思考

若是在同一個問題中,對不一樣的樣本點用不一樣的懲罰因子也是能夠的。經過查閱文獻看到有給定正負樣本不一樣的懲罰因子,這樣對於若是正負樣本點的數目差異比較大,能夠對樣本數目比較小的樣本類別賦予較大的權重,不然此類樣本錯分的機率將增大。test

若是對於不一樣的樣本點賦予不一樣的懲罰因子,這樣從理論上來講,應該會有更好的分類效果,分別考慮每一個樣本的懲罰因子,肯定其對於錯分的影響,可是這樣對於複雜性又有所提升,須要單獨考慮每一個樣本。可是對於樣本點比較少的時候,比較適合分別賦予權重,有更好的效果。技巧

關於懲罰因子C的選取是依靠經驗,在LibSVM中通常取值爲10或者100。

對於不一樣核函數的影響,通常在SVM中用到的核函數主要有RBF核、線性核、多項式核、Sigmoid核。

核函數的重要性在於能夠將無窮維的映射轉換爲簡單的點乘,對於某一特徵映射,可能將原空間映射到高維空間產生維數災難,核函數有效的解決了這個問題。文獻[5]中指出不一樣核函數的選取對於分類效果有明顯的差異,而文獻[6]中則指出核函數的具體形式對分類效果的影響不大,對此,利用了小型數據集對不一樣核函數的效果進行驗證。

實驗中利用了三個訓練和測試集,分別爲train1.txt、test1.txt、train2.txt、test2.txt、train3.txt、test3.txt,數據集的特色以下:均爲二分類問題,特徵維數爲二維,數據集的樣本數少(僅供測試)。

 

實驗中利用LibSVM的庫函數仿真的效果以下:

關於懲罰因子和核函數的思考
       關於懲罰因子和核函數的思考

    關於懲罰因子和核函數的思考

從實驗結果中能夠看出,不一樣的核函數選取對於小數據集來講,影響並不大,對於分類的正確率及精度等無明顯差異,可是對於線性不可分問題則有差別,而且不一樣的核函數對運算速度有必定的影響。

相關文章
相關標籤/搜索