SiGraph: sulcal graphs


subAdaptive.h
Go to the documentation of this file.
1
2
3#ifndef SI_SUBADAPTIVE_SUBADAPTIVE_H
4#define SI_SUBADAPTIVE_SUBADAPTIVE_H
5
8#include <vector>
9#include <set>
10#include <map>
11#include <string>
12
13class Tree;
14
15
16namespace sigraph
17{
18
20class AdaptiveLeaf;
21
22
23
30{
31
32public:
33 struct Stat
34 {
35 double mean;
36 double sigma;
37 };
38
44
50
52 static double ForgetFactor;
54 static double GenForgetFactor;
57 static double GenGoodForgetFactor;
60 static double GenBadForgetFactor;
62 static double LocalForgetFactor;
63
64 virtual ~SubAdaptive();
65
66 virtual SubAdaptive & operator = (const SubAdaptive & sa);
68 virtual SubAdaptive* clone() const = 0;
69
72
75 const SiDBLearnable &tr, const SiDBLearnable &tst) = 0;
77 virtual bool hasIncrementalLearning(void) const = 0;
78 virtual double normalizedPotential(double outp) const;
79 virtual double unNormalizedPotential(double nout) const;
80 virtual double getLearnedLabel(const SiVectorLearnable &vl) const;
81 //Appel de la fonction de test sur l'ensemble d'une DB
82 virtual SubAdResponse *test(const SiDBLearnable &tst);
85 virtual double test(const SiVectorLearnable &vl);
91 virtual double prop(const std::vector<double> & vec) = 0;
93 virtual void init();
97 virtual std::vector<double>*
98 normalizeSelected(const double *vec, unsigned int size);
99
107 virtual bool openFile(const std::string & filename = "");
109 virtual void closeFile();
111 virtual bool fileOpened() const
112 { return(_stream != 0); }
113
114 virtual std::string
115 chooseFilename(const std::string & basename = "") const;
117 virtual void subFiles(const std::string & prefix,
118 std::set<std::string> & listNames) const;
119
122 std::string getRealClassMode(void) const
123 {
124 static std::string mode[] = {"class", "potential"};
125 return mode[_real_class_mode];
126 }
127
128
131
132 virtual void resetStats();
134 virtual void setStats(const std::vector<double> &mean,
135 const std::vector<double> &sigma);
137 virtual void learnStats(const std::vector<double> &vec, double outp=0);
138 unsigned nStats() const;
139 void setNStats(unsigned nstats);
140 const std::map<unsigned, Stat> & stats() const;
141 void setStats(const std::map<unsigned, Stat> & stats);
142 double getMean(unsigned ind) { return _stats[ind].mean; }
143 double getSigma(unsigned ind) { return _stats[ind].sigma; }
144 double errorRate() const { return(_errorRate); }
145 double genErrorRate() const { return(_genErrorRate); }
146 double genGoodErrorRate() const { return(_ggErrorRate); }
147 double genBadErrorRate() const { return(_gbErrorRate); }
149 double genMeanErrorRate() const;
150 void setErrorRate(double rate) { _errorRate = rate; }
151 void setGenErrorRate(double rate) { _genErrorRate = rate; }
152 double localMinGErr() const { return(_ml); }
153 double localMaxGErr() const { return(_Ml); }
154 double globalMinGErr() const { return(_mg); }
155 double globalMaxGErr() const { return(_Mg); }
156 void setLocalMinGErr(double e) { _ml = e; }
157 void setLocalMaxGErr(double e) { _Ml = e; }
158 void setGlobalMinGErr(double e) { _mg = e; }
159 void setGlobalMaxGErr(double e) { _Mg = e; }
160 double misclassGoodRate() const { return _misclassGoodRate; }
162 double misclassBadRate() const { return _misclassBadRate; }
163 void setMisclassBadRate(double x) { _misclassBadRate = x; }
164 double misclassRate() const
165 { return (_misclassGoodRate + _misclassBadRate) / 2; }
166
167 void updateErrors(double err);
170 void updateGoodErrors(double err);
173 void updateBadErrors(double err);
174 void setGenGoodErrorRate(double rate) { _ggErrorRate = rate; }
175 void setGenBadErrorRate(double rate) { _gbErrorRate = rate; }
176 void setLocalGoodMinGErr(double e) { _mgl = e; }
177 void setLocalGoodMaxGErr(double e) { _Mgl = e; }
178 void setGlobalGoodMinGErr(double e) { _mgg = e; }
179 void setGlobalGoodMaxGErr(double e) { _Mgg = e; }
180 double appGoodErrorRate() const { return(_agErrorRate); }
181 void setAppGoodErrorRate(double e) { _agErrorRate = e; }
182 unsigned stepsSinceGenMin() const { return(_stepsSinceGenMin); }
183 void setStepsSinceGenMin(unsigned n) { _stepsSinceGenMin = n; }
184 void setGlobalGenGBError(double e) { _mggb = e; }
185 void setLearnfinished(bool s) { _learnfinished = s; }
186 bool getLearnfinished(void) const { return _learnfinished; }
187
189
191 virtual void buildTree(Tree & tr) const;
192 std::string name() const { return(_name); }
193 void setName(const std::string name) { _name = name; }
194 virtual void setBaseName(const std::string &) {}
196 virtual void getStreams(SubAdaptive & sa)
197 {
198 _stream = sa._stream;
199 _tstream = sa._tstream;
200 sa._stream = 0;
201 sa._tstream = 0;
202 }
203
204 virtual void setFileNames(const std::string &) {}
205 virtual std::string fileNames() const { return(""); }
207 virtual void setMinOut(double mino) { _minOut = mino; }
209 virtual void setMaxOut(double maxo) { _maxOut = maxo; }
210 virtual double relianceWeight() const;
215
216
217protected:
219 std::string _name;
221 unsigned _nStats;
223 std::map<unsigned, Stat> _stats;
225 std::ostream *_stream;
227 std::ostream *_tstream;
233 double _mg;
235 double _Mg;
237 double _ml;
239 double _Ml;
243 double _mgl;
245 double _Mgl;
247 double _mgg;
249 double _Mgg;
257 double _mggb;
261 double _minOut;
263 double _maxOut;
266
270
271
272 SubAdaptive(const std::string name = "");
273 SubAdaptive(const SubAdaptive & sa);
274
275private:
276};
277
278
279// Fonctions inline
280
298
299
301{
302 if(this != &sa)
303 {
304 _name = sa._name;
305 _nStats = sa._nStats;
306 _stats = sa._stats;
309 _mg = sa._mg;
310 _Mg = sa._Mg;
311 _ml = sa._ml;
312 _Ml = sa._Ml;
314 _mgl = sa._mgl;
315 _Mgl = sa._Mgl;
316 _mgg = sa._mgg;
317 _Mgg = sa._Mgg;
321 _mggb = sa._mggb;
324 _minOut = sa._minOut;
325 _maxOut = sa._maxOut;
329 }
330 return(*this);
331}
332
333
334inline unsigned SubAdaptive::nStats() const
335{
336 return(_nStats);
337}
338
339
340inline void SubAdaptive::setNStats(unsigned nstats)
341{
342 _nStats = nstats;
343}
344
345
346inline
347const std::map<unsigned, SubAdaptive::Stat> & SubAdaptive::stats() const
348{
349 return(_stats);
350}
351
352
353inline void SubAdaptive::setStats(const std::map<unsigned, Stat> & stats)
354{
355 _stats = stats;
356}
357
358inline double SubAdaptive::normalizedPotential(double outp) const
359{
360 return (outp - _minOut) / (_maxOut == _minOut ? 1 : _maxOut - _minOut);
361}
362
363inline double SubAdaptive::unNormalizedPotential(double nout) const
364{
365 double outp;
366
367 outp = _minOut + nout * (_maxOut == _minOut ? 1 : _maxOut - _minOut);
368 /* truncate subadaptive unNormalized output : to prevent errors from
369 * crazy subadaptive models. */
370 if (outp < _minOut) outp = _minOut;
371 else if (outp > _maxOut) outp = _maxOut;
372 return outp;
373}
374
375}
376
377#endif
378
379
380
El�ment adaptatif terminal.
Specialization for sigraph : Y as only one dim.
double _mg
Minimum global d'erreur.
double appGoodErrorRate() const
double _mgl
Min local d'erreur sur les bons (généralisation)
void setMisclassBadRate(double x)
virtual SubAdResponse * test(const SiDBLearnable &tst)
double _Mgg
Max global d'erreur sur les bons.
void setGenGoodErrorRate(double rate)
double _genErrorRate
Taux d'erreur de généralisation.
void setGenErrorRate(double rate)
void updateGoodErrors(double err)
Met à jour les taux d'erreur de généralisation pour les bons exemples (appelé par test())
static double GenForgetFactor
Facteur d'oubli pour moyenner les taux d'erreurs de généralisation.
Definition subAdaptive.h:54
static double LocalForgetFactor
Facteur d'oubli pour les min et max locaux.
Definition subAdaptive.h:62
virtual double unNormalizedPotential(double nout) const
void updateErrors(double err)
Met à jour les taux d'erreur de généralisation (appelé par test())
SubAdaptive(const std::string name="")
double genMeanErrorRate() const
C'est CETTE fonction qui est utilisée pour la pondération des experts.
virtual bool fileOpened() const
répond si le fichier est ouvert ou non
virtual std::string chooseFilename(const std::string &basename="") const
Choisit un nom de fichier par défaut.
double _errorRate
Taux d'erreur d'apprentissage.
double _mgg
Min global d'erreur sur les bons.
virtual double normalizedPotential(double outp) const
double genBadErrorRate() const
double _minOut
Borne inf de la sortie.
double _ggErrorRate
Taux d'erreur de généralisation sur les bons exemples.
void setMisclassGoodRate(double x)
void setRelianceWeightMethod(RelianceWeightMethod x)
std::ostream * _stream
fichier de sauvegarde des données reçues en apprentissage
static double GenGoodForgetFactor
Facteur d'oubli pour moyenner les taux d'erreurs de généralisation des bons exemples.
Definition subAdaptive.h:57
virtual void setMinOut(double mino)
Fixe le min de la sortie.
double globalMaxGErr() const
void setStepsSinceGenMin(unsigned n)
static double GenBadForgetFactor
Facteur d'oubli pour moyenner les taux d'erreurs de généralisation des mauvais exemples.
Definition subAdaptive.h:60
double misclassBadRate() const
void setGlobalGoodMaxGErr(double e)
double globalMinGErr() const
void setLearnfinished(bool s)
virtual double relianceWeight() const
RelianceWeightMethod _relianceWeightMethod
virtual SubAdaptive * clone() const =0
copie
double misclassRate() const
unsigned nStats() const
void setGlobalMaxGErr(double e)
double genErrorRate() const
double getSigma(unsigned ind)
virtual SubAdaptive & operator=(const SubAdaptive &sa)
unsigned stepsSinceGenMin() const
static double ForgetFactor
Facteur d'oubli pour moyenner les taux d'erreurs.
Definition subAdaptive.h:52
virtual void getStreams(SubAdaptive &sa)
Transfère les fichiers ouverts d'un autre modèle (en cas de copie)
std::map< unsigned, Stat > _stats
Statistiques pour chaque entrée.
virtual SubAdResponse * train(AdaptiveLeaf &, const SiDBLearnable &tr, const SiDBLearnable &tst)=0
Cumule phase d'apprentissage (learn) et phase de test si besoin.
unsigned _nStats
Nombre d'exemples dans les stats.
double genGoodErrorRate() const
virtual void setFileNames(const std::string &)
Noms des fichiers de sauvegardes (des réseaux de neurones par ex.)
void setLocalGoodMinGErr(double e)
void setErrorRate(double rate)
void setGenBadErrorRate(double rate)
double getMean(unsigned ind)
RelianceWeightMethod relianceWeightMethod() const
virtual void init()
Initialise l'apprentissage (fonction abstraite)
std::ostream * _tstream
fichier de sauvegarde pour les données de propagation / test
void setLocalMaxGErr(double e)
virtual std::vector< double > * normalizeSelected(const double *vec, unsigned int size)
Normalise le vecteur d'entrée et ne retourne que les composantes sélectionnées dans le modèle.
bool _learnfinished
L'apprentissage a été effectué.
unsigned _stepsSinceGenMin
Nb de tests depuis le dernier minimum global.
double _ml
Minimum local d'erreur.
RealClassMode _real_class_mode
Real Class mode.
void setNStats(unsigned nstats)
double errorRate() const
double _maxOut
Borne sup de la sortie.
void setGlobalGenGBError(double e)
double _gbErrorRate
Taux d'erreur de généralisation sur les mauvais exemples.
virtual void learnStats(const std::vector< double > &vec, double outp=0)
Ajout à la base de statistiques.
double localMaxGErr() const
void setLocalGoodMaxGErr(double e)
double _mggb
Min global de (erreur bons + erreur mauvais) en généralisation.
double _Mgl
Max local d'erreur sur les bons.
void setAppGoodErrorRate(double e)
virtual void subFiles(const std::string &prefix, std::set< std::string > &listNames) const
Donne la liste des fichiers sous le modèle.
double misclassGoodRate() const
double localMinGErr() const
std::string name() const
std::string getRealClassMode(void) const
std::string _name
Entrées utiles.
bool getLearnfinished(void) const
void setRealClassMode(RealClassMode m)
double _Mg
Maximum global d'erreur.
virtual double test(const SiVectorLearnable &vl)
Test: met à jour le taux d'erreur de généralisation Renvoie la valeur prédite par le classifieur.
const std::map< unsigned, Stat > & stats() const
virtual std::string fileNames() const
double _Ml
Maximum local d'erreur.
virtual bool hasIncrementalLearning(void) const =0
Apprentissage incrémental (vecteur par vecteur) ?
virtual double prop(const std::vector< double > &vec)=0
Propagation (model answer).
void setGlobalGoodMinGErr(double e)
void setName(const std::string name)
virtual bool openFile(const std::string &filename="")
Ouvre un fichier pour écrire les vecteurs de données.
virtual void setStats(const std::vector< double > &mean, const std::vector< double > &sigma)
SetStats from vectors.
virtual void closeFile()
Ferme le fichier.
void setGlobalMinGErr(double e)
void updateBadErrors(double err)
Met à jour les taux d'erreur de généralisation pour les bons exemples (appelé par test())
virtual void setMaxOut(double maxo)
Fixe le max de la sortie.
double _agErrorRate
Taux d'erreur d'apprentissage sur les bons exemples.
void setLocalMinGErr(double e)
virtual void setBaseName(const std::string &)
virtual void buildTree(Tree &tr) const
Conversion en arbre (pour IO)
virtual double getLearnedLabel(const SiVectorLearnable &vl) const
virtual void resetStats()
Vide toutes les stats.