(1)model= svmtrain(train_label, train_matrix, ['libsvm_options']);
其中:
train_label表示訓練集的標簽。
train_matrix表示訓練集的屬性矩陣。
libsvm_options是需要設置的一系列參數,各個參數可參見《libsvm 參數說明.txt》,里面介紹的很詳細,中英文都有的。如果用回歸的話,其中的-s參數值應為3。
model:是訓練得到的模型,是一個結構體(如果參數中用到-v,得到的就不是結構體,對於分類問題,得到的是交叉檢驗下的平均分類准確率;對於回歸問題,得到的是均方誤差)。
(2)[predicted_label, accuracy/mse,decision_values/prob_estimates]=svmpredict(test_label, test_matrix, model, ['libsvm_options']);
其中:
test _label表示測試集的標簽(這個值可以不知道,因為作預測的時候,本來就是想知道這個值的,這個時候,隨便制定一個值就可以了,只是這個時候得到的mse就沒有意義了)。
test _matrix表示測試集的屬性矩陣。
model 是上面訓練得到的模型。
libsvm_options是需要設置的一系列參數。
predicted_label表示預測得到的標簽。
accuracy/mse是一個3*1的列向量,其中第1個數字用於分類問題,表示分類准確率;后兩個數字用於回歸問題,第2個數字表示mse;第三個數字表示平方相關系數(也就是說,如果分類的話,看第一個數字就可以了;回歸的話,看后兩個數字)。
decision_values/prob_estimates:第三個返回值,一個矩陣包含決策的值或者概率估計。對於n個預測樣本、k類的問題,如果指定“-b 1”參數,則n x k的矩陣,每一行表示這個樣本分別屬於每一個類別的概率;如果沒有指定“-b 1”參數,則為n x k*(k-1)/2的矩陣,每一行表示k(k-1)/2個二分類SVM的預測結果。
(3) 訓練的參數
LIBSVM訓練時可以選擇的參數很多,包括:
-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(gamma):核函數中的gamma函數設置(針對多項式/rbf/sigmoid核函數)(默認1/k,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:是否使用啟發式,0或1(默認1)
-wi weight:設置第幾類的參數C為weight*C (C-SVC中的C) (默認1)
-v n: n-fold交互檢驗模式,n為fold的個數,必須大於等於2
以上這些參數設置可以按照SVM的類型和核函數所支持的參數進行任意組合,如果設置的參數在函數或SVM類型中沒有也不會產生影響,程序不會接受該參數;如果應有的參數設置不正確,參數將采用默認值。
(4) modle參數
model.Parameters參數意義從上到下依次為:
-s svm類型:SVM設置類型(默認0)
-t 核函數類型:核函數設置類型(默認2)
-d degree:和函數中的degree設置(針對多項式核函數)(默認3)
-g gama:核函數中的gamma函數設置(針對多項式/rbf/sigmoid核函數)(默認類別數目的倒數)
-r coef0:核函數中的coef0設置(針對多項式/sigmoid核函數)(默認為0)
model.Label:表示數據集中類別的標簽
model.nr_class:表示數據集中有多少標簽
model.totalSV:代表總共的支持向量機的數目
model.nSV:表示每類樣本的支持向量的數目
model.ProbA,model.ProbB:
model.sv_coef:表示支持向量在決策函數中的系數
model.SVs:表示支持向量
model.rho:表示決策函數中的常數項的相反數(-b)
model.sv_indices:表示支持向量在數據集中的位置
(5) 結果參數解析:
iter:迭代次數
nu: 與前面的操作參數-n nu 相同
obj:為SVM問題轉換為的二次規划求解得到的最小值
rho:表示決策函數中的常數項的相反數(-b)
nSV:標准支持向量個數,就是在分類的邊界上,松弛變量等於0,朗格朗日系數 0=<ai<C
nBSV:邊界的支持向量個數,不在分類的邊界上,松弛變量大於0,拉格郎日系數 ai = C
Accuracy:預測結果的准確率