📄 greedyappx.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>greedyappx.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>[sel_inx,Alpha,Z,kercnt,MsErr,MaxErr]</span>=...<br> greedyappx(X,ker,arg,m,p,mserr,maxerr,verb) <br><span class=h1>% GREEDYAPPX Kernel greedy data approximation.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% [Sel_inx,Alpha,Z,Kercnt,MsErrors,MaxErrors] = ...</span><br><span class=help>% greedyappx(X,Ker,Arg,M,P,MsErr,Maxerr,Verb) </span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% The input column vectors are assumed to be represented</span><br><span class=help>% in a kernel feature space given by (ker,arg) (see help kernel).</span><br><span class=help>% This function aims to select a subset X(:,Sel_inx) such</span><br><span class=help>% that linear span of X(:,Sel_inx) in the feature space </span><br><span class=help>% approximates well the linear span of X in the feature space.</span><br><span class=help>% The vectors are selected such that the mean square reconstruction</span><br><span class=help>% error in the feature space (the same objective as has Kernel PCA) </span><br><span class=help>% is minimized by greedy algorithm. The algorithm selects vectors</span><br><span class=help>% until on of the following stopping conditions is achieved:</span><br><span class=help>% - number of vectors achieves m </span><br><span class=help>% - maximal reconstruction error drops below maxerr </span><br><span class=help>% - mean squared sum of reconstruction errors less than mserr. </span><br><span class=help>% </span><br><span class=help>% The images of X(:,Inx_sel) in the features form a basis.</span><br><span class=help>% The projection of input vector x into the basis is done by</span><br><span class=help>% z = Alpha*kernel(x,X(:,Sel_inx),Ker,Arg)</span><br><span class=help>%</span><br><span class=help>% For more info refer to V.Franc: Optimization Algorithms for Kernel </span><br><span class=help>% Methods. Research report. CTU-CMP-2005-22. CTU FEL Prague. 2005.</span><br><span class=help>% ftp://cmp.felk.cvut.cz/pub/cmp/articles/franc/Franc-PhD.pdf .</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% X [Dim x Num_data] Input data.</span><br><span class=help>% Ker [string] Kernel identifier. See help of KERNEL for more info.</span><br><span class=help>% Arg [...] Argument of selected kernel.</span><br><span class=help>% M [1x1] Maximal number of vector used for approximation.</span><br><span class=help>% P [1x1] Depth of search for each basis vector.</span><br><span class=help>% MsErr [1x1] Desired mean sum of squared reconstruction errors.</span><br><span class=help>% MaxErr [1x1] Desired maximal reconstruction error.</span><br><span class=help>% Verb [1x1] If 1 then infor about process is displayed.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% Sel_inx [1 x M] Indices of selected vector, i.e., S = X(:,Sel_inx).</span><br><span class=help>% Alpha [M x M] Defines projection into the found basis (see above).</span><br><span class=help>% Z [M x Num_data] Training data projected into the found basis.</span><br><span class=help>% Kercnt [1 x 1] Number of used kernel evaluations.</span><br><span class=help>% MsErrors [1 x M] Mean square reconstruction error wrt to selected </span><br><span class=help>% basis vectors. MsErr(end) is the resulting error.</span><br><span class=help>% MaxErrors [1 x M] Maximal squared reconstruction error (of the worst</span><br><span class=help>% input example) wrt. selcetd basis vectors.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% type greedykpca</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% GREEDYKPCA.</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>% 09-sep-2005, VF</span><br><span class=help1>% 12-feb-2005, VF, New help made</span><br><span class=help1>% 10-dec-2004, VF, tmp(find(Errors<=0)) = -inf; added to evoid num errors.</span><br><span class=help1>% 5-may-2004, VF</span><br><span class=help1>% 13-mar-2004, VF</span><br><span class=help1>% 10-mar-2004, VF</span><br><span class=help1>% 9-mar-2004, addopted from greedyappx</span><br><br><hr><span class=keyword>if</span> <span class=stack>nargin</span> < 5, mserr=1e-6; <span class=keyword>end</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 6, maxerr=1e-6; <span class=keyword>end</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 7, verb=0; <span class=keyword>end</span><br><br>[dim,num_data]=size(X);<br><br><span class=keyword>if</span> verb, <br> <span class=io>fprintf</span>(<span class=quotes>'Greedy data approximation.\n'</span>);<br> <span class=io>fprintf</span>(<span class=quotes>'Setting: ker=%s, arg=%f, m=%d, eps=%f\n'</span>, ker,arg,m,maxerr); <br><span class=keyword>end</span><br><br>kercnt=0;<br>Errors = diagker(X,ker,arg)'; kercnt = kercnt+num_data;<br>Z = zeros(m,num_data);<br><br>MsErr = [];<br>MaxErr = [];<br>Alpha=zeros(m,m);<br>SV = zeros(dim,m);<br>sel_inx=[];<br>work_inx = [1:num_data];<br><br><span class=keyword>for</span> i=1:m,<br><br> <span class=keyword>if</span> i == 1,<br> [tmp_sel_inx,tmp_Alpha,tmp_Z,tmp_kercnt,tmp_MsErr,tmp_MaxErr]=...<br> upperbound_greedyappx(X,ker,arg,p,0,1e-12,verb);<br> kercnt = kercnt+tmp_kercnt;<br> <span class=keyword>else</span><br> init_model.Alpha = Alpha(1:i-1,1:i-1);<br> init_model.Z = Z(1:i-1,:);<br> init_model.Errors = Errors;<br><br> [tmp_sel_inx,tmp_Alpha,tmp_Z,tmp_kercnt,tmp_MsErr,tmp_MaxErr]=...<br> upperbound_greedyappx(X,ker,arg,p,0,1e-12,verb,init_model);<br> kercnt = kercnt+tmp_kercnt;<br> <span class=keyword>end</span><br><br> tmp_Z = tmp_Z(i:size(tmp_Z,1),:);<br> A = tmp_Z*tmp_Z';<br><br> tmp1 = sum(tmp_Z.^2,1);<br> tmp1(find(tmp1==0))=inf;<br> tmp = sum((A*tmp_Z).*tmp_Z,1)./tmp1;<br> tmp(sel_inx) = -inf; tmp(find(Errors<=0)) = -inf;<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -