Code covered by the BSD License  

Highlights from
Statistical Learning Toolbox

from Statistical Learning Toolbox by Dahua Lin
Functions for statistical learning, pattern recognition and computer vision, covering many topics.

Description of slproglearn
Home > sltoolbox > learn > slproglearn.m

slproglearn

PURPOSE ^

SLPROGLEARN Performs Progressive Learning from sample source

SYNOPSIS ^

function [models, info] = slproglearn(source, getter, learnfunctor, varargin)

DESCRIPTION ^

SLPROGLEARN Performs Progressive Learning from sample source

 $ Syntax $
   - models = slproglearn(source, getter, learnfunctor, ...)
   - [models, info] = slproglearn(source, getter, learnfunctor, ...)   

 $ Arguments $
   - source:       the source from which the data are fetched
   - getter:       the functor to fetch data from source, in the form:
                   data= f(source, ...)
   - learnfunctor: the functor to construct/update models from data,
                   it is given in the following form:
                   models = f(models, data, ...)
                   If the learning is recorded, it is like:
                   [models, record] = f(models, data, ...)
                   On initial construction, the input models is [].
   - models:       The constructed models
   
 $ Description $
   - models = slproglearn(source, getter, learnfunctor, ...) 
     construct models based on source, from which the samples are
     fetched. It is assumed that the source can continuously offer
     infinite number of samples. The construction is controlled by 
     the following properties.
     \*
     \t   Table. Properties of Progressive Learning
     \h       name        &            description             \\
          'isrecorded'    &  Whether each iteration is recorded 
                             (default = false)                 \\
          'gtuner'        &  The functor to tune the getter, in the form:
                             getter = f(getter, models, ...)   
                             (default = {})                      \\
          'cmpfunctor'    &  The functor to compare two set of models
                             and judge whether discrepancies meet the
                             criteria of convergence.
                             It is given in the following form:
                             isconverged = f(models1, models2, ...)
                             This properties must be specified.     \\
          'iter'          &  The iteration control properties for
                             sliterproc, default = {}.
          'verbose'       &  whether to show progress information 
                             (default = true)                       \\
          'initmodels'    &  The initial models, (default = [])
     \*

   - [models, info] = slproglearn(source, getter, learnfunctor, ...) also
     returns the information of iterative process.

 $ History $
   - Created by Dahua Lin, on Aug 31, 2006

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function [models, info] = slproglearn(source, getter, learnfunctor, varargin)
0002 %SLPROGLEARN Performs Progressive Learning from sample source
0003 %
0004 % $ Syntax $
0005 %   - models = slproglearn(source, getter, learnfunctor, ...)
0006 %   - [models, info] = slproglearn(source, getter, learnfunctor, ...)
0007 %
0008 % $ Arguments $
0009 %   - source:       the source from which the data are fetched
0010 %   - getter:       the functor to fetch data from source, in the form:
0011 %                   data= f(source, ...)
0012 %   - learnfunctor: the functor to construct/update models from data,
0013 %                   it is given in the following form:
0014 %                   models = f(models, data, ...)
0015 %                   If the learning is recorded, it is like:
0016 %                   [models, record] = f(models, data, ...)
0017 %                   On initial construction, the input models is [].
0018 %   - models:       The constructed models
0019 %
0020 % $ Description $
0021 %   - models = slproglearn(source, getter, learnfunctor, ...)
0022 %     construct models based on source, from which the samples are
0023 %     fetched. It is assumed that the source can continuously offer
0024 %     infinite number of samples. The construction is controlled by
0025 %     the following properties.
0026 %     \*
0027 %     \t   Table. Properties of Progressive Learning
0028 %     \h       name        &            description             \\
0029 %          'isrecorded'    &  Whether each iteration is recorded
0030 %                             (default = false)                 \\
0031 %          'gtuner'        &  The functor to tune the getter, in the form:
0032 %                             getter = f(getter, models, ...)
0033 %                             (default = {})                      \\
0034 %          'cmpfunctor'    &  The functor to compare two set of models
0035 %                             and judge whether discrepancies meet the
0036 %                             criteria of convergence.
0037 %                             It is given in the following form:
0038 %                             isconverged = f(models1, models2, ...)
0039 %                             This properties must be specified.     \\
0040 %          'iter'          &  The iteration control properties for
0041 %                             sliterproc, default = {}.
0042 %          'verbose'       &  whether to show progress information
0043 %                             (default = true)                       \\
0044 %          'initmodels'    &  The initial models, (default = [])
0045 %     \*
0046 %
0047 %   - [models, info] = slproglearn(source, getter, learnfunctor, ...) also
0048 %     returns the information of iterative process.
0049 %
0050 % $ History $
0051 %   - Created by Dahua Lin, on Aug 31, 2006
0052 %
0053 
0054 %% Parse and verify input arguments
0055 
0056 if nargin < 3
0057     raise_lackinput('slproglearn', 3);
0058 end
0059 
0060 opts.isrecorded = false;
0061 opts.gtuner = [];
0062 opts.cmpfunctor = [];
0063 opts.iter = {};
0064 opts.verbose = true;
0065 opts.initmodels = [];
0066 opts = slparseprops(opts, varargin{:});
0067 
0068 if isempty(opts.cmpfunctor)
0069     error('sltoolbox:invalidarg', ...
0070         'You should specify a models comparison functor');
0071 end
0072 
0073 
0074 %% Main Skeleton
0075 
0076 slsharedisp_attach('slproglearn', 'show', opts.verbose);
0077 
0078 slsharedisp(opts, 'Progressive Learning from source');
0079 
0080 objects = {source, opts.initmodels, getter};
0081 iterfunctor = {@proglearn_iter, learnfunctor, opts};
0082 cmpfunctor = {@proglearn_cmp, opts};
0083 if nargout < 2
0084     objects = ...
0085         sliterproc(objects, iterfunctor, cmpfunctor, opts.isrecorded, opts.iter{:});
0086 else
0087     [objects, info] = ...
0088         sliterproc(objects, iterfunctor, cmpfunctor, opts.isrecorded, opts.iter{:});
0089 end
0090 
0091 models = objects{2};
0092 
0093 slsharedisp_detach();
0094 
0095 
0096 
0097 %% Core Iteration function
0098 
0099 function varargout = proglearn_iter(objects, learnfunctor, opts)
0100 % objects = {source, models, getter}
0101 
0102 % take input
0103 source = objects{1};
0104 models = objects{2};
0105 getter = objects{3};
0106 
0107 % fetch data
0108 data = slevalfunctor(getter, source);
0109 
0110 % learn models
0111 if ~opts.isrecorded
0112     models = slevalfunctor(learnfunctor, models, data);
0113 else
0114     [models, rec] = slevalfunctor(learnfunctor, models, data);
0115 end
0116 
0117 % tune getter
0118 if ~isempty(opts.gtuner)
0119     getter = slevalfunctor(opts.gtuner, getter, models);
0120 end
0121 
0122 % make output
0123 objects = {source, models, getter};
0124 if ~opts.isrecorded
0125     varargout = {objects};
0126 else
0127     varargout = {objects, rec};
0128 end
0129 
0130 
0131 function isconverged = proglearn_cmp(objects_prev, objects, opts)
0132 
0133 models_prev = objects_prev{2};
0134 models = objects{2};
0135 
0136 isconverged = slevalfunctor(opts.cmpfunctor, models_prev, models);
0137 
0138 
0139 
0140 
0141 
0142

Generated on Wed 20-Sep-2006 12:43:11 by m2html © 2003

Contact us at files@mathworks.com