⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 greedyappx.html

📁 用matlab实现的统计模式识别工具箱
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<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>&nbsp;<span class=defun_out>[sel_inx,Alpha,Z,kercnt,MsErr,MaxErr]</span>=...<br>&nbsp;&nbsp;greedyappx(X,ker,arg,m,p,mserr,maxerr,verb)&nbsp;<br><span class=h1>%&nbsp;GREEDYAPPX&nbsp;Kernel&nbsp;greedy&nbsp;data&nbsp;approximation.</span><br><span class=help>%</span><br><span class=help>%&nbsp;<span class=help_field>Synopsis:</span></span><br><span class=help>%&nbsp;&nbsp;[inx,Alpha,kercnt,mserr,maxerr]=...</span><br><span class=help>%&nbsp;&nbsp;&nbsp;&nbsp;greedyappx(X,ker,arg,m,m2,mserr,maxerr,verb)</span><br><span class=help>%</span><br><span class=help>%&nbsp;<span class=help_field>Description:</span></span><br><span class=help>%&nbsp;&nbsp;This&nbsp;function&nbsp;aims&nbsp;to&nbsp;select&nbsp;a&nbsp;subset&nbsp;S&nbsp;of&nbsp;input&nbsp;data&nbsp;X&nbsp;such</span><br><span class=help>%&nbsp;&nbsp;that&nbsp;the&nbsp;feature&nbsp;space&nbsp;representation&nbsp;of&nbsp;X&nbsp;can&nbsp;be&nbsp;well&nbsp;</span><br><span class=help>%&nbsp;&nbsp;approximated&nbsp;by&nbsp;feature&nbsp;space&nbsp;representation&nbsp;of&nbsp;S.</span><br><span class=help>%&nbsp;&nbsp;The&nbsp;feature&nbsp;represenation&nbsp;of&nbsp;data&nbsp;is&nbsp;by&nbsp;the&nbsp;use&nbsp;of</span><br><span class=help>%&nbsp;&nbsp;specified&nbsp;kernel&nbsp;function.</span><br><span class=help>%</span><br><span class=help>%&nbsp;&nbsp;The&nbsp;greedy&nbsp;algortihm&nbsp;is&nbsp;used&nbsp;to&nbsp;seletect&nbsp;the&nbsp;subset&nbsp;S.&nbsp;</span><br><span class=help>%&nbsp;&nbsp;The&nbsp;algorithm&nbsp;iterates&nbsp;until&nbsp;on&nbsp;of&nbsp;the&nbsp;following&nbsp;stopping&nbsp;</span><br><span class=help>%&nbsp;&nbsp;conditions&nbsp;is&nbsp;achieved:</span><br><span class=help>%&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;number&nbsp;of&nbsp;vectors&nbsp;of&nbsp;S&nbsp;achieves&nbsp;m&nbsp;</span><br><span class=help>%&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;maximal&nbsp;reconstruction&nbsp;error&nbsp;is&nbsp;less&nbsp;than&nbsp;maxerr&nbsp;</span><br><span class=help>%&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;mean&nbsp;squared&nbsp;sum&nbsp;of&nbsp;reconstruction&nbsp;errors&nbsp;less&nbsp;than&nbsp;mserr.&nbsp;</span><br><span class=help>%&nbsp;&nbsp;</span><br><span class=help>%&nbsp;<span class=help_field>Input:</span></span><br><span class=help>%&nbsp;&nbsp;X&nbsp;[dim&nbsp;x&nbsp;num_data]&nbsp;Input&nbsp;data.</span><br><span class=help>%&nbsp;&nbsp;ker&nbsp;[string]&nbsp;Kernel&nbsp;identifier.&nbsp;See&nbsp;'help&nbsp;kernel'&nbsp;for&nbsp;more&nbsp;info.</span><br><span class=help>%&nbsp;&nbsp;arg&nbsp;[...]&nbsp;Argument&nbsp;of&nbsp;selected&nbsp;kernel.</span><br><span class=help>%&nbsp;&nbsp;m&nbsp;[1x1]&nbsp;Maximal&nbsp;number&nbsp;of&nbsp;vector&nbsp;used&nbsp;for&nbsp;approximation.</span><br><span class=help>%&nbsp;&nbsp;p&nbsp;[1x1]&nbsp;Depth&nbsp;of&nbsp;search&nbsp;for&nbsp;the&nbsp;best&nbsp;basis&nbsp;vector.</span><br><span class=help>%&nbsp;&nbsp;mserr&nbsp;[1x1]&nbsp;Desired&nbsp;mean&nbsp;sum&nbsp;of&nbsp;squared&nbsp;reconstruction&nbsp;errors.</span><br><span class=help>%&nbsp;&nbsp;maxerr&nbsp;[1x1]&nbsp;Desired&nbsp;maximal&nbsp;reconstruction&nbsp;error.</span><br><span class=help>%&nbsp;&nbsp;verb&nbsp;[1x1]&nbsp;If&nbsp;1&nbsp;then&nbsp;infor&nbsp;about&nbsp;process&nbsp;is&nbsp;displayed.</span><br><span class=help>%</span><br><span class=help>%&nbsp;<span class=help_field>Output:</span></span><br><span class=help>%&nbsp;&nbsp;inx&nbsp;[1&nbsp;x&nbsp;n]&nbsp;Indices&nbsp;of&nbsp;selected&nbsp;vector,&nbsp;i.e.,&nbsp;S&nbsp;=&nbsp;X(:,inx).</span><br><span class=help>%&nbsp;&nbsp;Alpha&nbsp;[m&nbsp;x&nbsp;m]&nbsp;Koefficient&nbsp;of&nbsp;the&nbsp;kernel&nbsp;projection&nbsp;of&nbsp;data&nbsp;on&nbsp;the</span><br><span class=help>%&nbsp;&nbsp;&nbsp;&nbsp;found&nbsp;base&nbsp;vectors,&nbsp;i.e.,&nbsp;z&nbsp;=&nbsp;Alpha*kernel(S,x,ker,arg).</span><br><span class=help>%&nbsp;&nbsp;Z&nbsp;[m&nbsp;x&nbsp;num_data]&nbsp;Training&nbsp;data&nbsp;projected&nbsp;on&nbsp;the&nbsp;found&nbsp;base&nbsp;vectors.</span><br><span class=help>%&nbsp;&nbsp;kercnt&nbsp;[1x1]&nbsp;Number&nbsp;of&nbsp;used&nbsp;kernel&nbsp;evaluations.</span><br><span class=help>%&nbsp;&nbsp;MsErr&nbsp;[1&nbsp;x&nbsp;m]&nbsp;Sum&nbsp;of&nbsp;squared&nbsp;reconstruction&nbsp;errors&nbsp;for&nbsp;corresponding</span><br><span class=help>%&nbsp;&nbsp;&nbsp;number&nbsp;of&nbsp;base&nbsp;vectors.</span><br><span class=help>%&nbsp;&nbsp;MaxErr&nbsp;[1&nbsp;x&nbsp;m]&nbsp;Maximal&nbsp;squared&nbsp;reconstruction&nbsp;error&nbsp;for&nbsp;crresponding&nbsp;</span><br><span class=help>%</span><br><span class=help>%&nbsp;See&nbsp;also&nbsp;</span><br><span class=help>%&nbsp;&nbsp;GREEDYKPCA.</span><br><span class=help>%</span><br><hr><span class=help1>%&nbsp;<span class=help1_field>About:</span>&nbsp;Statistical&nbsp;Pattern&nbsp;Recognition&nbsp;Toolbox</span><br><span class=help1>%&nbsp;(C)&nbsp;1999-2003,&nbsp;Written&nbsp;by&nbsp;Vojtech&nbsp;Franc&nbsp;and&nbsp;Vaclav&nbsp;Hlavac</span><br><span class=help1>%&nbsp;&lt;a&nbsp;href="http://www.cvut.cz"&gt;Czech&nbsp;Technical&nbsp;University&nbsp;Prague&lt;/a&gt;</span><br><span class=help1>%&nbsp;&lt;a&nbsp;href="http://www.feld.cvut.cz"&gt;Faculty&nbsp;of&nbsp;Electrical&nbsp;Engineering&lt;/a&gt;</span><br><span class=help1>%&nbsp;&lt;a&nbsp;href="http://cmp.felk.cvut.cz"&gt;Center&nbsp;for&nbsp;Machine&nbsp;Perception&lt;/a&gt;</span><br><br><span class=help1>%&nbsp;<span class=help1_field>Modifications:</span></span><br><span class=help1>%&nbsp;10-dec-2004,&nbsp;VF,&nbsp;tmp(find(Errors&lt;=0))&nbsp;=&nbsp;-inf;&nbsp;added&nbsp;to&nbsp;evoid&nbsp;num&nbsp;errors.</span><br><span class=help1>%&nbsp;5-may-2004,&nbsp;VF</span><br><span class=help1>%&nbsp;13-mar-2004,&nbsp;VF</span><br><span class=help1>%&nbsp;10-mar-2004,&nbsp;VF</span><br><span class=help1>%&nbsp;9-mar-2004,&nbsp;addopted&nbsp;from&nbsp;greedyappx</span><br><br><hr><span class=keyword>if</span>&nbsp;<span class=stack>nargin</span>&nbsp;&lt;&nbsp;5,&nbsp;mserr=1e-6;&nbsp;<span class=keyword>end</span><br><span class=keyword>if</span>&nbsp;<span class=stack>nargin</span>&nbsp;&lt;&nbsp;6,&nbsp;maxerr=1e-6;&nbsp;<span class=keyword>end</span><br><span class=keyword>if</span>&nbsp;<span class=stack>nargin</span>&nbsp;&lt;&nbsp;7,&nbsp;verb=0;&nbsp;<span class=keyword>end</span><br><br>[dim,num_data]=size(X);<br><br><span class=keyword>if</span>&nbsp;verb,&nbsp;<br>&nbsp;&nbsp;<span class=io>fprintf</span>(<span class=quotes>'Greedy&nbsp;data&nbsp;approximation.\n'</span>);<br>&nbsp;&nbsp;<span class=io>fprintf</span>(<span class=quotes>'Setting:&nbsp;ker=%s,&nbsp;arg=%f,&nbsp;m=%d,&nbsp;eps=%f\n'</span>,&nbsp;ker,arg,m,maxerr);&nbsp;<br><span class=keyword>end</span><br><br>kercnt=0;<br>Errors&nbsp;=&nbsp;diagker(X,ker,arg)';&nbsp;&nbsp;kercnt&nbsp;=&nbsp;kercnt+num_data;<br>Z&nbsp;=&nbsp;zeros(m,num_data);<br><br>MsErr&nbsp;=&nbsp;[];<br>MaxErr&nbsp;=&nbsp;[];<br>Alpha=zeros(m,m);<br>SV&nbsp;=&nbsp;zeros(dim,m);<br>sel_inx=[];<br>work_inx&nbsp;=&nbsp;[1:num_data];<br><br><span class=keyword>for</span>&nbsp;i=1:m,<br><br>&nbsp;&nbsp;<span class=comment>%&nbsp;call&nbsp;greedyappx2</span><br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;i&nbsp;==&nbsp;1,<br>&nbsp;&nbsp;&nbsp;&nbsp;[tmp_sel_inx,tmp_Alpha,tmp_Z,tmp_kercnt,tmp_MsErr,tmp_MaxErr]=...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ordinary_greedyappx(X,ker,arg,p,0,1e-12,verb);<br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;[tmp_sel_inx,tmp_Alpha,tmp_Z,tmp_kercnt,tmp_MsErr,tmp_MaxErr]=...</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ordinary_greedyappx(X,ker,arg,p,mserr,maxerr,verb);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;kercnt&nbsp;=&nbsp;kercnt+tmp_kercnt;<br>&nbsp;&nbsp;<span class=keyword>else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;init_model.Alpha&nbsp;=&nbsp;Alpha(1:i-1,1:i-1);<br>&nbsp;&nbsp;&nbsp;&nbsp;init_model.Z&nbsp;=&nbsp;Z(1:i-1,:);<br>&nbsp;&nbsp;&nbsp;&nbsp;init_model.Errors&nbsp;=&nbsp;Errors;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;[tmp_sel_inx,tmp_Alpha,tmp_Z,tmp_kercnt,tmp_MsErr,tmp_MaxErr]=...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ordinary_greedyappx(X,ker,arg,p,0,1e-12,verb,init_model);<br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;[tmp_sel_inx,tmp_Alpha,tmp_Z,tmp_kercnt,tmp_MsErr,tmp_MaxErr]=...</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ordinary_greedyappx(X,ker,arg,p,mserr,maxerr,verb,init_model);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;kercnt&nbsp;=&nbsp;kercnt+tmp_kercnt;<br>&nbsp;&nbsp;<span class=keyword>end</span><br><br>&nbsp;&nbsp;tmp_Z&nbsp;=&nbsp;tmp_Z(i:size(tmp_Z,1),:);<br>&nbsp;&nbsp;A&nbsp;=&nbsp;tmp_Z*tmp_Z';<br><br>&nbsp;&nbsp;tmp1&nbsp;=&nbsp;sum(tmp_Z.^2,1);<br>&nbsp;&nbsp;tmp1(find(tmp1==0))=inf;<br>&nbsp;&nbsp;tmp&nbsp;=&nbsp;sum((A*tmp_Z).*tmp_Z,1)./tmp1;<br>&nbsp;&nbsp;tmp(sel_inx)&nbsp;=&nbsp;-inf;&nbsp;tmp(find(Errors&lt;=0))&nbsp;=&nbsp;-inf;<br>&nbsp;&nbsp;[dummy,new_inx]=max(tmp);<br>&nbsp;<br><span class=comment>%&nbsp;&nbsp;[V,D]&nbsp;=&nbsp;eig(A);</span><br><span class=comment>%&nbsp;&nbsp;D=diag(D);</span><br><span class=comment>%&nbsp;&nbsp;[dummy,inx]=max(D);</span><br><span class=comment>%&nbsp;&nbsp;z&nbsp;=&nbsp;V(:,inx);</span><br><span class=comment>%&nbsp;&nbsp;dummy&nbsp;=&nbsp;z'*A*z/(z'*z)&nbsp;&nbsp;</span><br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;orthonormalization</span><br>&nbsp;&nbsp;sel_inx&nbsp;=&nbsp;[sel_inx&nbsp;new_inx];<br>&nbsp;&nbsp;tmp&nbsp;=&nbsp;kernel(&nbsp;X(:,new_inx),&nbsp;X(:,work_inx),&nbsp;ker,&nbsp;arg&nbsp;);<br>&nbsp;&nbsp;kercnt=kercnt+num_data-i;<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -