LTI-Lib latest version v1.9 - last update 10 Apr 2010

ltiDocuClassifiers.h

00001 /*
00002  * Copyright (C) 1998, 1999, 2000, 2001
00003  * Lehrstuhl fuer Technische Informatik, RWTH-Aachen, Germany
00004  * 
00005  * This file is part of the LTI-Computer Vision Library (LTI-Lib)
00006  *
00007  * The LTI-Lib is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public License (LGPL)
00009  * as published by the Free Software Foundation; either version 2.1 of
00010  * the License, or (at your option) any later version.
00011  *
00012  * The LTI-Lib is distributed in the hope that it will be
00013  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
00014  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public 
00018  * License along with the LTI-Lib; see the file LICENSE.  If
00019  * not, write to the Free Software Foundation, Inc., 59 Temple Place -
00020  * Suite 330, Boston, MA 02111-1307, USA.  
00021  */ 
00022 
00023  
00024 /*----------------------------------------------------------------
00025  * project ....: LTI Digital Image/Signal Processing Library
00026  * file .......: ltiDocuClassifiers.h
00027  * authors ....: Peter Doerfler
00028  * organization: LTI, RWTH Aachen
00029  * creation ...: 08.11.2002
00030  * revisions ..: $Id: ltiDocuClassifiers.h,v 1.3 2003/05/07 09:51:56 ltilib Exp $
00031  */
00032 
00033 #ifndef _LTI_DOCUCLASSIFIERS_H_
00034 #define _LTI_DOCUCLASSIFIERS_H_
00035 
00036 /**
00037 \page docuClassifiers How to use the Classifiers.
00038 
00039 - \ref types
00040 - \ref internalclasses
00041 - \ref related
00042   - \ref viz
00043   - \ref classStat
00044   - \ref sammon
00045 - \ref unsupervised
00046 - \ref instance
00047 - \ref sequence
00048 
00049 \section types Types of Classifiers 
00050 
00051 All classifiers follow the same principle. First, they are trained
00052 using some kind of training data. The trained classifier can then be
00053 used to classify new data, i.e. to assign the same label to the new
00054 data as to the most similar training data.
00055 
00056 Three different categories of classifiers exist in the LTI-Lib:
00057 - unsupervised classifiers
00058 - supervised sequence classifiers
00059 - supervised instance classifiers
00060 
00061 The first category includes all algorithms that are trained without
00062 knowing the proper labels or results for each training
00063 pattern. Clustering algorithms are included here, although most are
00064 not designed for later classifying new data. Supervised classifiers
00065 are trained knowing the expected result for each training
00066 pattern. They are divided in two groups: sequence classifiers work on
00067 time series whereas instance classifiers work on n-dimensional
00068 vectors.
00069 
00070 All classifiers have four essential properties:
00071 
00072 - The \b parameters are static properties of the classifier. All
00073   classifiers have default settings for the parameters
00074   object. However, many classifiers will not work properly without
00075   adjustment of some of the parameters.
00076 - The \b status contains error messages. If any of the methods,
00077   particularly train and classify, return false. Information of the
00078   nature of the failure can be obtained by calling getStatusString().
00079 - The \b progress of the training can be monitored with a
00080   progressObject. See \ref progress.
00081 - The \b outputTemplate contains information on how internal results
00082   are mapped to an ouputVector which is the result of a
00083   classification. This member should only be changed by experienced
00084   users. Usually, the outputTemplate is set by the classifier itself
00085   during the training.
00086 
00087 The results of the classification are returned in an ouputVector. This
00088 object contains labels and corresponding recognition values. These can
00089 often be interpreted as probabilities. Section \ref outvec gives
00090 details about this data structure.
00091 
00092 \section internalclasses Helper Classes
00093 
00094 \subsection progress Progress Objects
00095 
00096 The progressInfo object gives information on how many steps an
00097 algorithm will take until finished and how many have already been
00098 accomplished. Also the name of the classifier is usually given. The
00099 following progress infos exist:
00100 
00101 - lti::streamProgressInfo writes ASCII into a stream. The default
00102   stream is the console output.
00103 
00104 \subsection params Parameters
00105 
00106 The parameters of the classifier class define an enumeration
00107 eDistanceMeasure which is used to specify which distance is used in
00108 the classifier. Options are the L1 and L2 distances.
00109 
00110 See also lti::classifier::parameters.
00111 
00112 \subsection outvec Output Vector
00113 
00114 The output vector is the result of a classification, i.e. calling the
00115 classify method of a classifier. It assigns values to the labels. In
00116 the case of supervised classifiers these labels where supplied by the
00117 user during training. In case of unsupervised classification the
00118 classifier usually assigns labels from 0 to C-1 with C the number of
00119 classes found. 
00120 
00121 Output vectors can be the final result of a process. In this case they
00122 are usually displayed by an application or used for statistical
00123 analysis of the classification process. For the later the
00124 classificationStatistics %functor can be used. It is also possible to
00125 combine the results of several classifiers using the combination
00126 %functor.
00127 
00128 For further reading see the documentation of lti::classifier::outputVector.
00129 
00130 \section related Related Topics
00131 
00132 
00133 \subsection viz Visualization of Classifiers and Data
00134 
00135 \subsubsection vizData Visualizing Data
00136 
00137 lti::draw
00138 lti::epsDraw
00139 lti::draw3D
00140 lti::draw2DDistribution
00141 
00142 \subsubsection vizClass Visualizing Classification Results
00143 
00144 lti::classifier2DVisualizer
00145 
00146 \subsection classStat Classification Statistics
00147 
00148 lti::classificationStatistics
00149 
00150 \subsection sammon Sammon's Mapping
00151 
00152 Sammon's Mapping transforms points in n-dimensional space to points in
00153 m-dimensional space while trying to preserve all distances between the
00154 points. Usually, m will be 2 or 3 so that the points can be displayed
00155 using one of the lti::draw classes and an appropriate
00156 lti::viewer. Sammon's mapping can be very useful to get an idea of the
00157 distribution of higher dimensional data without losing as much
00158 information as when using e.g. lti::principalComponents to reduce the
00159 dimensionality.
00160 
00161 However, the mapping is a very difficult task and might easily fail to
00162 converge at a minimum. Check the error to get an idea about the performance. In case it is bad there are several options:
00163 - try to reduce the amount of data (point). This can be done e.g. by
00164   using a lti::clustering algorithm with the number of clusters a
00165   fraction of the number of data points, say a third. Then use the
00166   cluster centers as data points. This is an easy quantization method.
00167 - reduce the number of dimensions a little e.g. to 10 with
00168   lti::principalComponents or a feature selection method. Use the
00169   lower dimensional points for Sammon's mapping. Thus, at least you'll
00170   get the information from 10 dimensions.
00171 
00172 For more information see lti::sammonsMapping.
00173 
00174 */
00175 
00176 /**
00177 \page unsupervised Unsupervised Classifiers
00178 
00179 Unsupervised classifiers are methods that try to find 'natural' or
00180 'sensible' structure in data. To this end each data point is usually
00181 member of a newly found group. A distinct label is assigned to each
00182 group. Some algorithms allow membership of each point to more then one
00183 group. One example is the \ref fcm.
00184 
00185 The most popular application of unsupervised classifiers is data
00186 analysis and possibly visualization. However, some methods are also
00187 used for data compression or quantization.
00188 
00189 This page first deals with clustering techniques. These are usually
00190 statistical methods for finding groups (clusters). The second section
00191 deals with an artificial neural network, the Self-Organizing Feature
00192 Maps, which perform unsupervised classification.
00193 
00194 - \ref cluster
00195   - \ref kMeans
00196   - \ref fcm
00197   - \ref adapt
00198 - \ref som
00199   - \ref som2
00200   - \ref somViz
00201 
00202 Related classes:
00203   - lti::unsupervisedClassifier
00204 
00205 \section cluster Clustering
00206 
00207 - \ref kMeans
00208 - \ref fcm
00209 - \ref adapt
00210 
00211 \subsection kMeans k-Means Clustering
00212 
00213 lti::kMeansClustering
00214 
00215 \subsection fcm Fuzzy-C-Means Clustering
00216 
00217 lti::fuzzyCMeans
00218 
00219 \subsection adapt Adaptive k-Means Clustering
00220 
00221 lti::adaptiveKMeans
00222 
00223 \section som Self Organizing Feature Maps
00224 
00225 lti::SOFM
00226 
00227 - \ref som2
00228 - \ref somViz
00229 
00230 \subsection som2 2D SOMs
00231 
00232 lti::SOFM2D
00233 
00234 \subsection somViz Visualization of SOMs
00235 
00236 Still to be done.
00237 
00238 */
00239 
00240 /**
00241 \page instance Supervised Instance Classifiers
00242 
00243 - \ref stat
00244   - \ref svm
00245   - \ref shClass
00246   - \ref trees
00247 - \ref ann
00248   - \ref mlp
00249   - \ref lvq
00250   - \ref rbf
00251 
00252 \section stat Statistical Classifiers
00253 
00254 - \ref svm
00255 - \ref shClass
00256 - \ref trees
00257 
00258 \subsection svm Support Vector Machine
00259 
00260 lti::svm
00261 
00262 \subsection shClass Sparse Histogram-based Classifier
00263 
00264 lti::shClassifier
00265 
00266 \subsection trees Decision Trees
00267 
00268 lti::decisionTree
00269 
00270 \section ann Artificial Neural Networks
00271 
00272 - \ref mlp
00273 - \ref lvq
00274 - \ref rbf
00275 
00276 \subsection mlp Multi Layer Perceptron
00277 
00278 lti::MLP
00279 
00280 \subsection lvq Learning Vector Quantization
00281 
00282 lti::lvq
00283 
00284 \subsection rbf Radial Basis Function Network
00285 
00286 lti::rbf
00287 
00288 */
00289 
00290 /**
00291 \page sequence Supervised Sequence Classifiers
00292 
00293 lti::hmmClassifier
00294 */
00295 
00296 
00297 */
00298 
00299 #endif

Generated on Sat Apr 10 15:25:22 2010 for LTI-Lib by Doxygen 1.6.1