📄 test_gentleboost_model.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"><html xmlns:mwsh="http://www.mathworks.com/namespace/mcode/v1/syntaxhighlight.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--This HTML is auto-generated from an M-file.To make changes, update the M-file and republish this document. --> <title>test_gentleboost_model</title> <meta name="generator" content="MATLAB 7.5"> <meta name="date" content="2009-02-16"> <meta name="m-file" content="test_gentleboost_model"><style>body { background-color: white; margin:10px;}h1 { color: #990000; font-size: x-large;}h2 { color: #990000; font-size: medium;}/* Make the text shrink to fit narrow windows, but not stretch too far in wide windows. */ p,h1,h2,div.content div { max-width: 600px; /* Hack for IE6 */ width: auto !important; width: 600px;}pre.codeinput { background: #EEEEEE; padding: 10px;}@media print { pre.codeinput {word-wrap:break-word; width:100%;}} span.keyword {color: #0000FF}span.comment {color: #228B22}span.string {color: #A020F0}span.untermstring {color: #B20000}span.syscmd {color: #B28C00}pre.codeoutput { color: #666666; padding: 10px;}pre.error { color: red;}p.footer { text-align: right; font-size: xx-small; font-weight: lighter; font-style: italic; color: gray;} </style></head> <body> <div class="content"> <h2>Contents</h2> <div> <ul> <li><a href="#1">Example 1 : train, test errors and ROC cuves on IRIS data</a></li> <li><a href="#2">Example 2 : train, test errors versus number of weak-learners on WINE data</a></li> <li><a href="#3">Example 3 : train, test errors and ROC cuves on IRIS data versus classifiers : Gentleboost, SRNG, SVM</a></li> <li><a href="#4">CV options</a></li> <li><a href="#5">Gentle Adaboost options</a></li> <li><a href="#6">SRNG options</a></li> <li><a href="#7">SVM options</a></li> </ul> </div> <h2>Example 1 : train, test errors and ROC cuves on IRIS data<a name="1"></a></h2><pre class="codeinput">clear, clc, close <span class="string">all</span>,drawnowload <span class="string">iris</span>labels = unique(y);options.method = 7;options.holding.rho = 0.7;options.holding.K = 50;options.weaklearner = 0;options.epsi = 0.1;options.lambda = 1e-2;options.max_ite = 1000;options.T = 10;positive = labels(2);ind_positive = find(labels==positive);[d , N] = size(X);[Itrain , Itest] = sampling(X , y , options);[Ncv , Ntrain] = size(Itrain);Ntest = size(Itest , 2);error_train = zeros(1 , Ncv);error_test = zeros(1 , Ncv);tptrain = zeros(Ncv , 100);fptrain = zeros(Ncv , 100);tptest = zeros(Ncv , 100);fptest = zeros(Ncv , 100);<span class="keyword">for</span> i=1:Ncv<span class="comment">% i</span><span class="comment">% drawnow</span> [Xtrain , ytrain , Xtest , ytest] = samplingset(X , y , Itrain , Itest , i); model_gentle = gentleboost_model(Xtrain , ytrain , options.T , options); [ytrain_est , fxtrain] = gentleboost_predict(Xtrain , model_gentle , options); error_train(i) = sum(ytrain_est~=ytrain)/Ntrain; ytrain(ytrain ~=positive) = -1; ytrain(ytrain ==positive) = 1; [tptrain(i , :) , fptrain(i , :)] = basicroc(ytrain , fxtrain(ind_positive , :)); [ytest_est , fxtest] = gentleboost_predict(Xtest , model_gentle , options); error_test(i) = sum(ytest_est~=ytest)/Ntest; ytest(ytest ~=positive) = -1; ytest(ytest ==positive) = 1; [tptest(i , :) , fptest(i , :)] = basicroc(ytest , fxtest(ind_positive , :));<span class="keyword">end</span>disp([mean(error_train) , mean(error_test)])fptrain_mean = mean(fptrain);tptrain_mean = mean(tptrain);auc_train = auroc(tptrain_mean', fptrain_mean');fptest_mean = mean(fptest);tptest_mean = mean(tptest);auc_test = auroc(tptest_mean', fptest_mean');figureplot(fptrain_mean , tptrain_mean , <span class="string">'k'</span> , fptest_mean , tptest_mean , <span class="string">'r'</span> , <span class="string">'linewidth'</span> , 2)axis([-0.02 , 1.02 , -0.02 , 1.02])legend(sprintf(<span class="string">'Train, AUC = %5.4f'</span> , auc_train) , sprintf(<span class="string">'Test, AUC = %5.4f'</span> , auc_test))xlabel(<span class="string">'False Positive Rate'</span> , <span class="string">'fontsize'</span> , 12 , <span class="string">'fontweight'</span> , <span class="string">'bold'</span>)ylabel(<span class="string">'True Positive Rate'</span> , <span class="string">'fontsize'</span> , 12 , <span class="string">'fontweight'</span> , <span class="string">'bold'</span>)title(sprintf(<span class="string">'Gentleboost/weak = %d, d = %d, positive = %d, T = %d'</span> , options.weaklearner , d , positive , options.T) , <span class="string">'fontsize'</span> , 13 , <span class="string">'fontweight'</span> , <span class="string">'bold'</span>)grid <span class="string">on</span></pre><pre class="codeoutput"> 0.0232 0.0542</pre><img vspace="5" hspace="5" src="test_gentleboost_model_01.png"> <h2>Example 2 : train, test errors versus number of weak-learners on WINE data<a name="2"></a></h2><pre class="codeinput">load <span class="string">wine</span>options.method = 7;options.holding.rho = 0.7;options.holding.K = 50;options.weaklearner = 0;options.epsi = 0.1;options.lambda = 1e-2;options.max_ite = 1000;Tmin = 1;stepT = 2;Tmax = 50;T = (Tmin:stepT:Tmax);NT = length(T);[d , N] = size(X);[Itrain , Itest] = sampling(X , y , options);[Ncv , Ntrain] = size(Itrain);Ntest = size(Itest , 2);error_train = zeros(NT , Ncv);error_test = zeros(NT , Ncv);<span class="keyword">for</span> t = 1:NT <span class="keyword">for</span> i=1:Ncv [Xtrain , ytrain , Xtest , ytest] = samplingset(X , y , Itrain , Itest , i); model_gentle = gentleboost_model(Xtrain , ytrain , T(t) , options); [ytrain_est , fxtrain] = gentleboost_predict(Xtrain , model_gentle , options); error_train(t,i) = sum(ytrain_est~=ytrain)/Ntrain; [ytest_est , fxtest] = gentleboost_predict(Xtest , model_gentle , options); error_test(t,i) = sum(ytest_est~=ytest)/Ntest; <span class="keyword">end</span><span class="comment">% T(t)</span><span class="comment">% drawnow</span><span class="keyword">end</span>error_train_T = mean(error_train , 2);error_test_T = mean(error_test , 2);[mini , pos] = min(error_test_T);figureplot(T , error_train_T , T , error_test_T , <span class="string">'r'</span> , T(pos) , mini , <span class="string">'ko'</span> , <span class="string">'linewidth'</span> , 2)xlabel(<span class="string">'Number of weak-learners'</span> , <span class="string">'fontsize'</span> , 12 , <span class="string">'fontweight'</span> , <span class="string">'bold'</span>)ylabel(<span class="string">'Error rate'</span> , <span class="string">'fontsize'</span> , 12 , <span class="string">'fontweight'</span> , <span class="string">'bold'</span>)title(sprintf(<span class="string">'Gentleboost/weak = %d, d = %d'</span> , options.weaklearner , d ) , <span class="string">'fontsize'</span> , 13 , <span class="string">'fontweight'</span> , <span class="string">'bold'</span>)legend(<span class="string">'Train'</span> , <span class="string">'Test'</span>)grid</pre><img vspace="5" hspace="5" src="test_gentleboost_model_02.png"> <h2>Example 3 : train, test errors and ROC cuves on IRIS data versus classifiers : Gentleboost, SRNG, SVM<a name="3"></a></h2><pre class="codeinput">load <span class="string">iris</span>labels = unique(y);</pre><h2>CV options<a name="4"></a></h2><pre class="codeinput">options.method = 7;options.holding.rho = 0.7;options.holding.K = 50;</pre><h2>Gentle Adaboost options<a name="5"></a></h2><pre class="codeinput">options.weaklearner = 0;options.epsi = 0.1;options.lambda = 1e-2;options.max_ite = 1000;options.T = 10;</pre><h2>SRNG options<a name="6"></a></h2><pre class="codeinput">options.epsilonk = 0.005;options.epsilonl = 0.001;options.epsilonlambda = 10e-8;options.sigmastart = 2;options.sigmaend = 10e-4;options.sigmastretch = 10e-3;options.threshold = 10e-10;options.xi = 0.1;options.nb_iterations = 3000;options.metric_method = 1;options.shuffle = 1;options.updatelambda = 1;options.Nproto_pclass = 4*ones(1 , length(labels));</pre><h2>SVM options<a name="7"></a></h2><pre class="codeinput">options.s = 1;options.gamma = 0.01;options.nu = 0.2;options.b = 1;options.strcmd = [<span class="string">'-s '</span> num2str(options.s) <span class="string">' -g '</span> num2str(options.gamma) <span class="string">' -n '</span> num2str(options.nu) <span class="string">' -b '</span> num2str(options.b)];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -