【机器学习】基于实战项目的SVM算法库使用方法详解
0. 學習背景
? ? ? ? 本人在進行車道線檢測項目中使用到了LBP+SVM算法來改善高復雜度場景下的車道線特征提取效果,主要流程如下:提取訓練集中車道線的LBP特征,然后訓練一個SVM分類器。在測試時,使用相同的特征提取方法,將特征值輸入SVM分類器中,根據“決策面”方程,即超平面方程即可得到每個測試樣本到分類超平面的距離,即該樣本對應的“得分”。
? ? ? ?使用了自帶的SVM算法庫縮短項目周期。為了兼顧訓練時間和分類效果,先基于少量訓練樣本使用線性分類器進行實驗:在訓練集上統計了查準率P和查全率R,其中正樣本共4925,正確檢測:4482,漏檢:443,負樣本:共10520,誤檢:375;查準率:P=92.88%,查全率:R=91.0%。
? ? ? 為了進一步改善分類效果,增加訓練樣本數量(正樣本3w張/負樣本12w張)并使用RBF(徑向基)核函數,測試結果較之前有明顯的提升,但是仍存在一些問題。為了盡可能通曉各參數對SVM分類效果的影響,參考如下博文內容進行深入的學習。
?
之前通過一個系列對支持向量機(以下簡稱SVM)算法的原理做了一個總結,本文從實踐的角度對scikit-learn SVM算法庫的使用做一個小結。scikit-learn SVM算法庫封裝了libsvm 和 liblinear 的實現,僅僅重寫了算法了接口部分。
1.?scikit-learn SVM算法庫使用概述
scikit-learn中SVM的算法庫分為兩類,一類是分類的算法庫,包括SVC,?NuSVC,和LinearSVC 3個類。另一類是回歸算法庫,包括SVR,?NuSVR,和LinearSVR 3個類。相關的類都包裹在sklearn.svm模塊之中。
對于SVC,?NuSVC,和LinearSVC 3個分類的類,SVC和?NuSVC差不多,區別僅僅在于對損失的度量方式不同,而LinearSVC從名字就可以看出,他是線性分類,也就是不支持各種低維到高維的核函數,僅僅支持線性核函數,對線性不可分的數據不能使用。
同樣的,對于SVR,?NuSVR,和LinearSVR 3個回歸的類,?SVR和NuSVR差不多,區別也僅僅在于對損失的度量方式不同。LinearSVR是線性回歸,只能使用線性核函數。
我們使用這些類的時候,如果有經驗知道數據是線性可以擬合的,那么使用LinearSVC去分類 或者LinearSVR去回歸,它們不需要我們去慢慢的調參去選擇各種核函數以及對應參數, 速度也快。如果我們對數據分布沒有什么經驗,一般使用SVC去分類或者SVR去回歸,這就需要我們選擇核函數以及對核函數調參了。
什么特殊場景需要使用NuSVC分類 和 NuSVR 回歸呢?如果我們對訓練集訓練的錯誤率或者說支持向量的百分比有要求的時候,可以選擇NuSVC分類 和 NuSVR?。它們有一個參數來控制這個百分比。
這些類的詳細使用方法我們在下面再詳細講述。
?
2. 回顧SVM分類算法和回歸算法
我們先簡要回顧下SVM分類算法和回歸算法,因為這里面有些參數對應于算法庫的參數,如果不先復習下,下面對參數的講述可能會有些難以理解。
對于SVM分類算法,其原始形式是:
對于SVM回歸算法,其原始形式是:
?
3.?SVM核函數概述
在scikit-learn中,內置的核函數一共有4種,當然如果你認為線性核函數不算核函數的話,那就只有三種。
一般情況下,對非線性數據使用默認的高斯核函數會有比較好的效果,如果你不是SVM調參高手的話,建議使用高斯核來做數據分析。
?
4. SVM分類算法庫參數小結
這里我們對SVM分類算法庫的重要參數做一個詳細的解釋,重點講述調參的一些注意點。
?5. SVM回歸算法庫參數小結?
SVM回歸算法庫的重要參數巨大部分和分類算法庫類似,因此這里重點講述和分類算法庫不同的部分,對于相同的部分可以參考上一節對應參數。
?
6.?SVM算法庫其他調參要點
上面已經對scikit-learn中類庫的參數做了總結,這里對其他的調參要點做一個小結。
1)一般推薦在做訓練之前對數據進行歸一化,當然測試集中的數據也需要歸一化。。
2)在特征數非常多的情況下,或者樣本數遠小于特征數的時候,使用線性核,效果已經很好,并且只需要選擇懲罰系數C即可。
3)在選擇核函數時,如果線性擬合不好,一般推薦使用默認的高斯核'rbf'。這時我們主要需要對懲罰系數C和核函數參數γγ進行艱苦的調參,通過多輪的交叉驗證選擇合適的懲罰系數C和核函數參數γγ。
4)理論上高斯核不會比線性核差,但是這個理論卻建立在要花費更多的時間來調參上。所以實際上能用線性核解決問題我們盡量使用線性核。
?
部分內容轉自:https://www.cnblogs.com/pinard/p/6117515.html
總結
以上是生活随笔為你收集整理的【机器学习】基于实战项目的SVM算法库使用方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习项目流程
- 下一篇: 【机器学习】LBP特征融合最大灰度差、平