?? rspoly2.html
字號(hào):
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>rspoly2.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>rspoly2</span>(<span class=defun_in>model,max_nsv</span>)<br><span class=h1>% RSPOLY2 Reduced set method for second order homogeneous polynomial kernel.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% red_model = rspoly2(model)</span><br><span class=help>% red_model = rspoly2(model,max_nsv)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% It uses reduced set techique to reduce complexity</span><br><span class=help>% of the kernel expansion with second order homogeneous polynomial </span><br><span class=help>% kernel k(x,y) = (x'*y)^2 = kernel(x,y,'poly',2) .</span><br><span class=help>%</span><br><span class=help>% The method was published in </span><br><span class=help>% J.C.Burges: Simplified Support Vector Decision Rules. ICML, 1996.</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] Weights of kernel expansion.</span><br><span class=help>% .b [1x1] Bias.</span><br><span class=help>% .sv.X [dim x nsv] Support vectors.</span><br><span class=help>% .options.ker = 'poly'</span><br><span class=help>% .options.arg = [2 0]</span><br><span class=help>%</span><br><span class=help>% max_nsv [1x1] Maximal number of new support vectors. If not given </span><br><span class=help>% then the new expansion approximates the original one exactly with</span><br><span class=help>% at most dim support vectors. </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>% red_model.Alpha [new_nsv x 1] New weights.</span><br><span class=help>% red_model.b [scalar] Bias.</span><br><span class=help>% red_model.sv.X [dim x new_nsv] New support vectors.</span><br><span class=help>% ...</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','poly','arg',[2 0],'C',10));</span><br><span class=help>% red_model = rspoly2( model );</span><br><span class=help>% figure; </span><br><span class=help>% subplot(1,2,1); axis square; ppatterns(trn); psvm(model);</span><br><span class=help>% subplot(1,2,2); axis square; ppatterns(trn); psvm(red_model);</span><br><span class=help>% </span><br><span class=help>% See also </span><br><span class=help>% RSRBF.</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-2004, 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>% 22-dec-2004, VF, header and comments added</span><br><span class=help1>% 28-nov-2003, VF</span><br><br><hr><span class=comment>% check inputs</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, max_nsv = inf; <span class=keyword>end</span><br><span class=keyword>if</span> strcmpi(model.options.ker,<span class=quotes>'poly'</span>) ~= 1 | ...<br> (model.options.arg ~= [2 0] & model.options.arg ~= 2)<br> <span class=error>error</span>(<span class=quotes>'Kernel must be homogeneous second order polynomial.'</span>);<br><span class=keyword>end</span><br><br>dim=size(model.sv.X,1);<br>nsv = model.nsv;<br><br>S = zeros(dim,dim);<br><br><span class=keyword>for</span> i=1:dim,<br> <span class=keyword>for</span> j=i:dim,<br> S(i,j) = (model.sv.X(i,:).*model.sv.X(j,:) )*model.Alpha(:);<br> S(j,i) = S(i,j);<br> <span class=keyword>end</span><br><span class=keyword>end</span><br><br>[V,D] = eig(S);<br>D = real(diag(D));<br>[dummy,inx] = sort(-abs(D));<br>D=D(inx);<br>V=V(:,inx);<br>inx = find(D ~= 0);<br><br><span class=comment>% take at most max_nsv support vectors</span><br>inx = inx(1:min(max_nsv,length(inx)));<br><br>red_model.nsv = length(inx);<br>red_model.Alpha = zeros(red_model.nsv,1);<br>red_model.b = model.b;<br>red_model.sv.X = zeros(dim,red_model.nsv);<br>red_model.options = model.options;<br>red_model.classifier = <span class=quotes>'svmclass'</span>;<br>red_model.eigval = D(inx);<br><br>cnt = 0;<br><span class=keyword>for</span> i=inx(:)',<br> cnt = cnt+1;<br> red_model.sv.X(:,cnt) = V(:,i);<br> red_model.Alpha(cnt) = D(i)/(red_model.sv.X(:,cnt)'*red_model.sv.X(:,cnt));<br><span class=keyword>end</span><br><br><span class=jump>return</span>;<br><span class=comment>% EOF</span><br></code>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -