libsvm_訓(xùn)練后的模型參數(shù)講解電子版本_第1頁
libsvm_訓(xùn)練后的模型參數(shù)講解電子版本_第2頁
libsvm_訓(xùn)練后的模型參數(shù)講解電子版本_第3頁
libsvm_訓(xùn)練后的模型參數(shù)講解電子版本_第4頁
libsvm_訓(xùn)練后的模型參數(shù)講解電子版本_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。libsvm_訓(xùn)練后的模型參數(shù)講解-libsvm訓(xùn)練后的模型參數(shù)講解本帖子主要就是講解利用libsvm-mat工具箱建立分類(回歸模型)后,得到的模型model里面參數(shù)的意義都是神馬?以及如果通過model得到相應(yīng)模型的表達(dá)式,這里主要以分類問題為例子。測試數(shù)據(jù)使用的是libsvm-mat自帶的heart_scale.mat數(shù)據(jù)(270*13的一個屬性據(jù)矩陣,共有270個樣本,每個樣本有13個屬性),方便大家自己測試學(xué)習(xí)。首先上一個簡短的測試代碼:%ModelDecryption%byfarutofar

2、utosStudio%/faruto%Email:%http:/www.mfun.la%lastmodifiedby2011.01.06%alittecleanworktic;closeall;clear;clc;formatcompact;%首先載入數(shù)據(jù)loadheart_scale;data=heart_scale_inst;label=heart_scale_label;%建立分類模型model=svmtrain(label,data,-s0-t2-c1.2-g2.8);model%利用建立的模型看其在訓(xùn)練集合上的分類效果PredictLabel,accuracy=svmpredict(

3、label,data,model);accuracy%toc;復(fù)制代碼運(yùn)行結(jié)果:model=Parameters:5x1doublenr_class:2totalSV:259rho:0.0514Label:2x1doubleProbA:ProbB:nSV:2x1doublesv_coef:259x1doubleSVs:259x13doubleAccuracy=99.6296%(269/270)(classification)accuracy=99.62960.01480.9851Elapsedtimeis0.040155seconds.復(fù)制代碼這里面為了簡單起見沒有將測試數(shù)據(jù)進(jìn)行訓(xùn)練集和測試集

4、的劃分,這里僅僅是為了簡單明了而已,分類結(jié)果估計可以不要管,參數(shù)優(yōu)化也不要管,另有帖子講解。下面我們就看看model這個結(jié)構(gòu)體里面的各種參數(shù)的意義都是神馬,model如下:model=Parameters:5x1doublenr_class:2totalSV:259rho:0.0514Label:2x1doubleProbA:ProbB:nSV:2x1doublesv_coef:259x1doubleSVs:259x13doublemodel.Parameters我們先來看一下model.Parameters里面承裝的都是什么:model.Parametersans=02.00003.0000

5、2.80000復(fù)制代碼重要知識點:model.Parameters參數(shù)意義從上到下依次為:-ssvm類型:SVM設(shè)置類型(默認(rèn)0)-t核函數(shù)類型:核函數(shù)設(shè)置類型(默認(rèn)2)-ddegree:核函數(shù)中的degree設(shè)置(針對多項式核函數(shù))(默認(rèn)3)-gr(gama):核函數(shù)中的gamma函數(shù)設(shè)置(針對多項式/rbf/sigmoid核函數(shù))(默認(rèn)類別數(shù)目的倒數(shù))-rcoef0:核函數(shù)中的coef0設(shè)置(針對多項式/sigmoid核函數(shù))(默認(rèn)0)即在本例中通過model.Parameters我們可以得知s參數(shù)為0;-t參數(shù)為2;-d參數(shù)為3;-g參數(shù)為2.8(這也是我們自己的輸入);-r參數(shù)為0。關(guān)

6、于libsvm參數(shù)的一點小說明:Libsvm中參數(shù)設(shè)置可以按照SVM的類型和核函數(shù)所支持的參數(shù)進(jìn)行任意組合,如果設(shè)置的參數(shù)在函數(shù)或SVM類型中沒有也不會產(chǎn)生影響,程序不會接受該參數(shù);如果應(yīng)有的參數(shù)設(shè)置不正確,參數(shù)將采用默認(rèn)值。model.Labelmodel.nr_classmodel.Labelans=1-1model.nr_classans=2復(fù)制代碼重要知識點:model.Label表示數(shù)據(jù)集中類別的標(biāo)簽都有什么,這里是1,-1;model.nr_class表示數(shù)據(jù)集中有多少類別,這里是二分類。model.totalSVmodel.nSVmodel.totalSVans=259model

7、.nSVans=118141復(fù)制代碼重要知識點:model.totalSV代表總共的支持向量的數(shù)目,這里共有259個支持向量;model.nSV表示每類樣本的支持向量的數(shù)目,這里表示標(biāo)簽為1的樣本的支持向量有118個,標(biāo)簽為-1的樣本的支持向量為141。注意:這里model.nSV所代表的順序是和model.Label相對應(yīng)的。model.ProbAmodel.ProbB關(guān)于這兩個參數(shù)這里不做介紹,使用-b參數(shù)時才能用到,用于概率估計。-bprobability_estimates:whethertotrainaSVCorSVRmodelforprobabilityestimates,0or1

8、(default0)model.sv_coefmodel.SVsmodel.rhosv_coef:259x1doubleSVs:259x13doublemodel.rho=0.0514復(fù)制代碼重要知識點:model.sv_coef是一個259*1的矩陣,承裝的是259個支持向量在決策函數(shù)中的系數(shù);model.SVs是一個259*13的稀疏矩陣,承裝的是259個支持向量。model.rho是決策函數(shù)中的常數(shù)項的相反數(shù)(-b)在這里首先我們看一下通過s0參數(shù)(C-SVC模型)得到的最終的分類決策函數(shù)的表達(dá)式是怎樣的?這里如果有關(guān)于C-SVC模型不懂的地方,請看這個pdf文件:libsvm_libr

9、ary.pdf附件:最終的決策函數(shù)為:在由于我們使用的是RBF核函數(shù)(前面參數(shù)設(shè)置t2),故這里的決策函數(shù)即為:其中|x-y|是二范數(shù)距離;這里面的b就是-model.rho(一個標(biāo)量數(shù)字);b=-model.rho;n代表支持向量的個數(shù)即n=model.totalSV(一個標(biāo)量數(shù)字);對于每一個i:wi=model.sv_coef(i);支持向量的系數(shù)(一個標(biāo)量數(shù)字)xi=model.SVs(i,:)支持向量(1*13的行向量)x是待預(yù)測標(biāo)簽的樣本(1*13的行向量)gamma就是-g參數(shù)好的下面我們通過model提供的信息自己建立上面的決策函數(shù)如下:%DecisionFunctionfun

10、ctionplabel=DecisionFunction(x,model)gamma=model.Parameters(4);RBF=(u,v)(exp(-gamma.*sum(u-v).2);len=length(model.sv_coef);y=0;fori=1:lenu=model.SVs(i,:);y=y+model.sv_coef(i)*RBF(u,x);endb=-model.rho;y=y+b;ify=0plabel=1;elseplabel=-1;end復(fù)制代碼有了這個決策函數(shù),我們就可以自己預(yù)測相應(yīng)樣本的標(biāo)簽了:%plable=zeros(270,1);fori=1:270

11、x=data(i,:);plabel(i,1)=DecisionFunction(x,model);end%驗證自己通過決策函數(shù)預(yù)測的標(biāo)簽和svmpredict給出的標(biāo)簽相同flag=sum(plabel=PredictLabel)over=1;復(fù)制代碼最終可以看到flag=270,即自己建立的決策函數(shù)是正確的,可以得到和svmpredict得到的一樣的樣本的預(yù)測標(biāo)簽,事實上svmpredict底層大體也就是這樣實現(xiàn)的。最后我們來看一下,svmpredict得到的返回參數(shù)的意義都是什么在下面這段代碼中:%首先載入數(shù)據(jù)loadheart_scale;data=heart_scale_inst;l

12、abel=heart_scale_label;%建立分類模型model=svmtrain(label,data,-s0-t2-c1.2-g2.8);model%利用建立的模型看其在訓(xùn)練集合上的分類效果PredictLabel,accuracy=svmpredict(label,data,model);accuracy復(fù)制代碼運(yùn)行可以看到model=Parameters:5x1doublenr_class:2totalSV:259rho:0.0514Label:2x1doubleProbA:ProbB:nSV:2x1doublesv_coef:259x1doubleSVs:259x13doubl

13、eAccuracy=99.6296%(269/270)(classification)accuracy=99.62960.01480.9851復(fù)制代碼這里面要說一下返回參數(shù)accuracy的三個參數(shù)的意義。重要的知識點:返回參數(shù)accuracy從上到下依次的意義分別是:分類準(zhǔn)率(分類問題中用到的參數(shù)指標(biāo))平均平方誤差(MSE(meansquarederror))回歸問題中用到的參數(shù)指標(biāo)平方相關(guān)系數(shù)(r2(squaredcorrelationcoefficient))回歸問題中用到的參數(shù)指標(biāo)其中mse和r2的計算公式分別為:插圖:寫在后面的話,至此關(guān)于model中相應(yīng)參數(shù)的一些意義,以及到底如果得到?jīng)Q策函數(shù)的表達(dá)式或者計算方式的就算是說的很明了了。可能還有的同學(xué)會問,如何得到分類決策函數(shù)中的那個alpha系數(shù)【這個肯定會有人問】,還是再磨嘰說一下吧:上面的wi其實是alpha和支持向量的類別標(biāo)簽(1或-1的乘積),原始決策函數(shù)的表達(dá)式如下:插圖:上面的yi是支持向量的類別標(biāo)簽(1或者-1),在libsvm中將yi和alph

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論