libsvm引數說明

2021-07-03 01:45:49 字數 3067 閱讀 4930

因為要用svm做regression,所以看了一些關於libsvm,總結以備用

libsvm在訓練model的時候,有如下引數要設定,當然有預設的引數,但是在具體應用方面效果會大大折扣。

options:可用的選項即表示的涵義如下

-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(-gamma|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:是否使用啟發式,0或1(預設1)

-wi weight:設定第幾類的引數c為weight*c(c-svc中的c)(預設1)

-v n: n-fold互動檢驗模式,n為fold的個數,必須大於等於2

其中-g選項中的k是指輸入資料中的屬性數。option -v 隨機地將資料剖分為n部

當構建完成model後,還要為上述引數選擇合適的值,方法主要有gridsearch,其他的感覺不常用,gridsearch說白了就是窮舉。

網格引數尋優函式(分類問題):svmcgforclass

[bestcvaccuracy,bestc,bestg]= 

svmcgforclass(train_label,train,

cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)

輸入:train_label:訓練集的標籤,格式要求與svmtrain相同。

train:訓練集,格式要求與svmtrain相同。

cmin,cmax:懲罰引數c的變化範圍,即在[2^cmin,2^cmax]範圍內尋找最佳的引數c,預設值為cmin=-8,cmax=8,即預設懲罰引數c的範圍是[2^(-8),2^8]。

gmin,gmax:rbf核引數g的變化範圍,即在[2^gmin,2^gmax]範圍內尋找最佳的rbf核引數g,預設值為gmin=-8,gmax=8,即預設rbf核引數g的範圍是[2^(-8),2^8]。

v:進行cross validation過程中的引數,即對訓練集進行v-fold cross validation,預設為3,即預設進行3折cv過程。

cstep,gstep:進行引數尋優是c和g的步進大小,即c的取值為2^cmin,2^(cmin+cstep),…,2^cmax,,g的取值為2^gmin,2^(gmin+gstep),…,2^gmax,預設取值為cstep=1,gstep=1。

accstep:最後引數選擇結果圖中準確率離散化顯示的步進間隔大小([0,100]之間的乙個數),預設為4.5。

輸出:bestcvaccuracy:最終cv意義下的最佳分類準確率。

bestc:最佳的引數c。

bestg:最佳的引數g。

網格引數尋優函式(回歸問題):svmcgforregress

[bestcvmse,bestc,bestg]= 

svmcgforregress(train_label,train,

cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)

其輸入輸出與svmcgforclass類似,這裡不再贅述。

而當你訓練完了model,在用它做classification或regression之前,應該知道model中的內容,以及其含義。

用來訓練的是libsvm自帶的heart資料

model = 

parameters: [5x1 double]

nr_class: 2

totalsv: 259                  % 支援向量的數目

rho: 0.0514               %  b

label: [2x1 double]     %  classification中標籤的個數

proba:

probb:

nsv: [2x1 double]

%  每類支援向量的個數

sv_coef: [259x1 double] %   支援向量對應的wi

svs: [259x13 double]  %   裝的是259個支援向量

model.parameters引數意義從上到下依次為:

-s svm型別:svm設定型別(預設0)

-t 核函式型別:核函式設定型別(預設2)

-d degree:核函式中的degree設定(針對多項式核函式)(預設3)

-g r(gama):核函式中的gamma函式設定(針對多項式/rbf/sigmoid核函式) (預設類別數目的倒數)

-r coef0:核函式中的coef0設定(針對多項式/sigmoid核函式)((預設0)

svm 

怎樣能得到好的結果

1.    

對資料做歸一化(

******

scaling)

2.    

應用rbf kernel

3.    

用cross-validation

和grid-search

得到最優的c和

g 4.    

用得到的最優c和

g訓練訓練資料

5.    測試

libsvm 引數說明

作為機器學習很強大的乙個分類器之一,研究一下如何使用。libsvm工具箱是台灣大學林智仁 c.jlin 等人開發的一套簡單的 易於使用的svm模式識別與回歸機軟體包,該軟體包利用收斂性證明的成果改進演算法,取得了很好的結果。libsvm 共實現了5種型別的svm c svc,u svc,one cl...

機器學習 之 libsvm 引數說明

因為要用svm做regression,所以看了一些關於libsvm,總結以備用 libsvm在訓練model的時候,有如下引數要設定,當然有預設的引數,但是在具體應用方面效果會大大折扣。options 可用的選項即表示的涵義如下 s svm型別 svm設定型別 預設0 0 c svc 1 v svc...

Cache control引數說明

header中的cache control引數說明 php編碼 網頁的快取是由http訊息頭中的 cache control 來控制的,常見的取值有private no cache max age must revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況 ...