LIBSVM是一個由臺灣大學林智仁(Lin Chih-Jen)教授等開發(fā)的SVM模式識別與回歸的軟件包,使用簡單,功能強大另萤。(注意本文介紹的不是matlab自帶的svm實現函數,自帶的svm實現函數僅支持分類問題,不支持回歸問題不铆;而libsvm不僅支持分類問題,亦支持回歸問題裹唆,參數可調節(jié)誓斥,功能更強大。)
libsvm工具箱中svmtrain函數格式為:
model= svmtrain(train_label, train_data, ['libsvm_options']);
兩個步驟:訓練建男碚剩——>模型預測
分類 ?model = svmtrain(train_label, train_data, '-s 0 -t 2 -c 1.2 -g 2.8');
回歸 ?model = svmtrain(train_label, train_data, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');
其中:
train_label表示訓練集的標簽劳坑。
train_matrix表示訓練集的數據。
libsvm_options是需要設置的一系列參數成畦,如果用回歸的話距芬,其中的-s參數值應為3。
參數說明:
-s svm類型:SVM設置類型(默認0)
0 -- C-SVC
1 --v-SVC
2 – 一類SVM
3 -- e -SVR
4 -- v-SVR
-t 核函數類型:核函數設置類型(默認2)
0 – 線性:u'v
1 – 多項式:(r*u'v + coef0)^degree
2 – RBF函數:exp(-r|u-v|^2)
3 –sigmoid:tanh(r*u'v + coef0)
-d degree:核函數中的 degree 設置(針對多項式核函數)(默認 3)
-g r(gama):核函數中的 gamma 函數設置(針對多項式/rbf/sigmoid 核函數)(默認 1/ k)
-r coef0:核函數中的 coef0 設置(針對多項式/sigmoid 核函數)((默認 0)
-c cost:設置 C-SVC循帐,e -SVR 和 v-SVR 的參數(損失函數)(默認 1)
-n nu:設置 v-SVC框仔,一類 SVM 和 v- SVR 的參數(默認 0.5)
-p p:設置 e -SVR 中損失函數 p 的值(默認 0.1)
-m cachesize:設置 cache 內存大小,以 MB 為單位(默認 40)
-e eps:設置允許的終止判據(默認 0.001)
-h shrinking:是否使用啟發(fā)式拄养,0 或 1(默認 1)
-wi weight:設置第幾類的參數 C 為 weight*C(C-SVC 中的 C)(默認 1)
-v n: n-fold 交互檢驗模式离斩,n 為 fold 的個數,必須大于等于 2
其中-g 選項中的 k 是指輸入數據中的屬性數。option -v 隨機地將數據剖分為 n 部分并計算交互檢驗準確度和均方根誤差跛梗。以上這些參數設置可以按照 SVM 的類型和核函數所支持的參數進行任意組合寻馏,如果設置的參數在函數或SVM 類型中沒有也不會產生影響,程序不會接受該參數核偿;如果應有的參數設置不正確诚欠,參數將采用默認值。
本文主要介紹的是svmtrain函數返回的model參數漾岳,model是訓練得到的模型轰绵,是一個結構體(如果參數中用到-v,得到的就不是結構體蝗羊,對于分類問題藏澳,得到的是交叉檢驗下的平均分類準確率;對于回歸問題耀找,得到的是均方誤差)翔悠。
舉例說明:
Parameters: [5x1 double]? %結構體變量,依次保存的是 -s -t -d -g -r參數
nr_class: 4 ? ?%分類類別標簽的數目
totalSV: 39 ? ?%總的支持向量個數
rho: [6x1 double] ? %分類器截距的負值野芒,b=-model.rho
Label: [4x1 double]? ?%類別的標號
ProbA: []? ? ? ? ?
ProbB: []? ? ? ? ? ? %關于這兩個參數這里不做介紹蓄愁,使用-b 參數時才能用到,用于概率估計
nSV: [4x1 double]? ?%每一類的支持向量的個數
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%注: model.nSV 所代表的順序是和 model.Label 相對應的
sv_coef: [39x3 double]? %支持向量的系數狞悲,與SVs相對應
SVs: [39x12 double]? %具體的支持向量撮抓,以稀疏矩陣的形式存儲
由于w*x+b=0,則:
特征權重:wi=model.SVs'*model.sv_coef? ??
? ? ? ? ? ? ? ? %wi 其實是 alpha 和支持向量的類別標簽(1 或-1 的乘積)
? ? ? ? ? ? ? ? ? b=-model.rho
w是高維空間中分類超平面的法向量摇锋,b是常數項丹拯。
補充兩篇超好的CSDN鏈接(神仙文章!]┧ 9猿辍):https://blog.csdn.net/jbb0523/article/details/80918214?(二分類)
https://blog.csdn.net/jbb0523/article/details/103355415?(多分類)
還有一篇關于Libsvm的svmtrain和svmpredict以及參數簡介(較詳細):