Libsvm svmtrain和svmpredict以及參數簡介


(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 線性核函數:uv

    1 多項式核函數:(r*uv + coef0)^degree

    2 RBF(徑向基)核函數:exp(-r|u-v|^2

    3 sigmoid核函數:tanh(r*uv + coef0)

-d degree:核函數中的degree設置(針對多項式核函數)(默認3

-g r(gamma):核函數中的gamma函數設置(針對多項式/rbf/sigmoid核函數)(默認1/kk為總類別數)

-r coef0:核函數中的coef0設置(針對多項式/sigmoid核函數)((默認0)

-c cost:設置C-SVCe -SVRv-SVR的參數(損失函數)(默認1

-n nu:設置v-SVC,一類SVMv- SVR的參數(默認0.5

-p p:設置e -SVR 中損失函數p的值(默認0.1

-m cachesize:設置cache內存大小,以MB為單位(默認40

-e eps:設置允許的終止判據(默認0.001

-h shrinking:是否使用啟發式,01(默認1

-wi weight:設置第幾類的參數Cweight*C (C-SVC中的C) (默認1

-v n: n-fold交互檢驗模式,nfold的個數,必須大於等於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:預測結果的准確率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM