?? rsrbf.html
字號:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>rsrbf.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>red_model </span>= <span class=defun_name>rsrbf</span>(<span class=defun_in>model,options</span>)<br><span class=h1>% RSRBF Redused Set Method for RBF kernel expansion.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% red_model = rsrbf(model)</span><br><span class=help>% red_model = rsrbf(model,options)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% red_model = rsrbf(model) searchs for a kernel expansion</span><br><span class=help>% with nsv vectors which best approximates the input </span><br><span class=help>% expansion given in model [Schol98a]. The Radial Basis </span><br><span class=help>% kernel (RBF) is assumed (see 'help kernel').</span><br><span class=help>% </span><br><span class=help>% red_model = rsrbf(model,options) allows to specify the </span><br><span class=help>% control paramaters.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% model [struct] Kernel expansion:</span><br><span class=help>% .Alpha [nsv x 1] Weight vector.</span><br><span class=help>% .sv.X [dim x nsv] Vectors defining the expansion.</span><br><span class=help>% .options.ker [string] Must be equal to 'rbf'.</span><br><span class=help>% .options.arg [1x1] Kernel argument (see 'help kernel').</span><br><span class=help>% </span><br><span class=help>% options [struct] Control parameters:</span><br><span class=help>% .nsv [1x1] Desired number of vectors in the reduced </span><br><span class=help>% expansion (default round(length(model.Alpha)/2)).</span><br><span class=help>% .eps [1x1] Desier limit on the norm of difference between </span><br><span class=help>% the original normal vector and the reduced the normal </span><br><span class=help>% vector in the feature space. The algorithm is stopped </span><br><span class=help>% when a lower difference is achived (default 1e-6).</span><br><span class=help>% .preimage [string] Function called to solve the RBF pre-image </span><br><span class=help>% problem (default 'rbfpreimg');</span><br><span class=help>% .verb [1x1] If 1 then progress info is display (default 0).</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% red_model [struct] Reduced kernel expansion.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% trn = load('riply_trn');</span><br><span class=help>% model = smo(trn,struct('ker','rbf','arg',1,'C',10));</span><br><span class=help>% red_model = rsrbf(model,struct('nsv',10));</span><br><span class=help>% figure; ppatterns(trn);</span><br><span class=help>% h1 = pboundary(model,struct('line_style','r'));</span><br><span class=help>% h2 = pboundary(red_model,struct('line_style','b'));</span><br><span class=help>% legend([h1(1) h2(1)],'Original SVM','Reduced SVM');</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% RBFPREIMG.</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a></span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a></span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 11-oct-2004, VF, knorm.m used </span><br><span class=help1>% 21-sep-2004, VF</span><br><span class=help1>% 10-jun-2004, VF</span><br><span class=help1>% 02-dec-2003, VF</span><br><br><hr><span class=comment>% process inputs</span><br><span class=comment>%--------------------------------------------------</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, options=[]; <span class=keyword>else</span> options = c2s(options); <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'nsv'</span>), options.nsv = round(length(model.Alpha)/2); <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'eps'</span>), options.eps = 1e-6; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'preimage'</span>), options.preimage = <span class=quotes>'rbfpreimg2'</span>; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'verb'</span>), options.verb = 0; <span class=keyword>end</span><br><br><span class=comment>% init</span><br><span class=comment>%--------------------------------------------------</span><br>Z=[];<br>Beta = [];<br>Alpha = model.Alpha(:);<br>X = model.sv.X;<br><span class=comment>%Const = Alpha'*kernel(X, model.options.ker, model.options.arg )*Alpha;</span><br>Const = knorm(X,Alpha,model.options.ker,model.options.arg)^2;<br><span class=error>error</span> = inf;<br>iter = 0;<br><br><span class=comment>% main loop</span><br><span class=comment>%--------------------------------------------------</span><br><span class=keyword>while</span> <span class=error>error</span> > options.eps & iter < options.nsv,<br> <br> iter = iter + 1;<br><br> <span class=keyword>if</span> options.verb, <br> <span class=io>fprintf</span>(<span class=quotes>'Iteration %d: '</span>, iter);<br> <span class=keyword>end</span><br> <br> tmp_model.Alpha = Alpha;<br> tmp_model.sv.X = X;<br> tmp_model.options = model.options;<br><br> <span class=keyword>if</span> options.verb, <br> <span class=io>fprintf</span>(<span class=quotes>'computing preimage, '</span>);<br> <span class=keyword>end</span><br><span class=comment>% Z = [Z, rbfpreimg2(tmp_model)];</span><br> Z = [Z, <span class=eval>feval</span>( options.preimage,tmp_model)];<br> <br> Kz = kernel( Z, model.options.ker, model.options.arg );<br> Kzs = kernel( Z, model.sv.X, model.options.ker, model.options.arg );<br> Beta = inv( Kz ) * Kzs * model.Alpha(:);<br> <br> <span class=error>error</span> = Const + Beta<span class=quotes>'*Kz*Beta - 2*Beta'</span>*Kzs*model.Alpha(:);<br> <span class=keyword>if</span> options.verb, <br> <span class=io>fprintf</span>(<span class=quotes>'||w-w_red||^2 = %f\n'</span>, <span class=error>error</span>);<br> <span class=keyword>end</span><br><br> Alpha = [model.Alpha(:); -Beta(:)]';<br> X = [model.sv.X, Z];<br> <br><span class=keyword>end</span><br><br>red_model = model;<br>red_model.Alpha = Beta;<br>red_model.sv.X = Z;<br>red_model.nsv = size(Z,2);<br><br><span class=jump>return</span>;<br><span class=comment>%EOF</span><br></code>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -