latest version v1.9 - last update 10 Apr 2010 |
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