因為要用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
% blabel: [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和
g4.
用得到的最優c和
g訓練訓練資料
5.
測試
libsvm引數說明
因為要用svm做regression,所以看了一些關於libsvm,總結以備用 libsvm在訓練model的時候,有如下引數要設定,當然有預設的引數,但是在具體應用方面效果會大大折扣。options 可用的選項即表示的涵義如下 s svm型別 svm設定型別 預設0 0 c svc 1 v svc...
libsvm 引數說明
作為機器學習很強大的乙個分類器之一,研究一下如何使用。libsvm工具箱是台灣大學林智仁 c.jlin 等人開發的一套簡單的 易於使用的svm模式識別與回歸機軟體包,該軟體包利用收斂性證明的成果改進演算法,取得了很好的結果。libsvm 共實現了5種型別的svm c svc,u svc,one cl...
Cache control引數說明
header中的cache control引數說明 php編碼 網頁的快取是由http訊息頭中的 cache control 來控制的,常見的取值有private no cache max age must revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況 ...