Logo ROOT   6.07/09
Reference Guide
MethodTMlpANN.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Andreas Hoecker, Joerg Stelzer, Helge Voss, Kai Voss
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : MethodTMlpANN *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Implementation of interface for Root-integrated artificial neural *
12  * network: TMultiLayerPerceptron, author: Christophe.Delaere@cern.ch *
13  * for a manual, see *
14  * http://root.cern.ch/root/html/TMultiLayerPerceptron.html *
15  * *
16  * Authors (alphabetical): *
17  * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
18  * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
19  * Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada *
20  * *
21  * Copyright (c) 2005: *
22  * CERN, Switzerland *
23  * U. of Victoria, Canada *
24  * MPI-K Heidelberg, Germany *
25  * *
26  * Redistribution and use in source and binary forms, with or without *
27  * modification, are permitted according to the terms listed in LICENSE *
28  * (http://tmva.sourceforge.net/LICENSE) *
29  **********************************************************************************/
30 
31 #ifndef ROOT_TMVA_MethodTMlpANN
32 #define ROOT_TMVA_MethodTMlpANN
33 
34 //////////////////////////////////////////////////////////////////////////
35 // //
36 // MethodTMlpANN //
37 // //
38 // Implementation of interface for Root-integrated artificial neural //
39 // network: TMultiLayerPerceptron //
40 // //
41 //////////////////////////////////////////////////////////////////////////
42 
43 #ifndef ROOT_TMVA_MethodBase
44 #include "TMVA/MethodBase.h"
45 #endif
46 
48 
49 namespace TMVA {
50 
51  class MethodTMlpANN : public MethodBase {
52 
53  public:
54 
55  MethodTMlpANN( const TString& jobName,
56  const TString& methodTitle,
57  DataSetInfo& theData,
58  const TString& theOption = "3000:N-1:N-2");
59 
60  MethodTMlpANN( DataSetInfo& theData,
61  const TString& theWeightFile);
62 
63  virtual ~MethodTMlpANN( void );
64 
65  virtual Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
66 
67  // training method
68  void Train( void );
69 
71 
72  // write weights to file
73  void AddWeightsXMLTo( void* parent ) const;
74 
75  // read weights from file
76  void ReadWeightsFromStream( std::istream& istr );
77  void ReadWeightsFromXML(void* wghtnode);
78 
79  // calculate the MVA value ...
80  // - here it is just a dummy, as it is done in the overwritten
81  // - PrepareEvaluationtree... ugly but necessary due to the strucure
82  // of TMultiLayerPercepton in ROOT grr... :-(
83  Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
84 
85  void SetHiddenLayer(TString hiddenlayer = "" ) { fHiddenLayer=hiddenlayer; }
86 
87  // ranking of input variables
88  const Ranking* CreateRanking() { return 0; }
89 
90  // make ROOT-independent C++ class
91  void MakeClass( const TString& classFileName = TString("") ) const;
92 
93  protected:
94 
95  // make ROOT-independent C++ class for classifier response (classifier-specific implementation)
96  void MakeClassSpecific( std::ostream&, const TString& ) const;
97 
98  // get help message text
99  void GetHelpMessage() const;
100 
101  private:
102 
103  // the option handling methods
104  void DeclareOptions();
105  void ProcessOptions();
106 
107  void CreateMLPOptions( TString );
108 
109  // option string
110  TString fLayerSpec; // Layer specification option
111 
113  TTree* fLocalTrainingTree; // local copy of training tree
114 
115  TString fHiddenLayer; // string containig the hidden layer structure
116  Int_t fNcycles; // number of training cylcles
117  Double_t fValidationFraction; // fraction of events in training tree used for cross validation
118  TString fMLPBuildOptions; // option string to build the mlp
119 
120  TString fLearningMethod; // the learning method (given via option string)
121 
122  // default initialisation called by all constructors
123  void Init( void );
124 
125  ClassDef(MethodTMlpANN,0); // Implementation of interface for TMultiLayerPerceptron
126  };
127 
128 } // namespace TMVA
129 
130 #endif
void Train(void)
performs TMlpANN training available learning methods:
Double_t GetMvaValue(Double_t *err=0, Double_t *errUpper=0)
calculate the value of the neural net for the current event
void MakeClass(const TString &classFileName=TString("")) const
create reader class for classifier -> overwrites base class function create specific class for TMulti...
void GetHelpMessage() const
get help message text
EAnalysisType
Definition: Types.h:128
Double_t fValidationFraction
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
void MakeClassSpecific(std::ostream &, const TString &) const
write specific classifier response nothing to do here - all taken care of by TMultiLayerPerceptron ...
#define ClassDef(name, id)
Definition: Rtypes.h:254
MethodTMlpANN(const TString &jobName, const TString &methodTitle, DataSetInfo &theData, const TString &theOption="3000:N-1:N-2")
standard constructor
void Init(void)
default initialisations
void ReadWeightsFromXML(void *wghtnode)
rebuild temporary textfile from xml weightfile and load this file into MLP
virtual ~MethodTMlpANN(void)
destructor
void ProcessOptions()
builds the neural network as specified by the user
void SetHiddenLayer(TString hiddenlayer="")
Definition: MethodTMlpANN.h:85
unsigned int UInt_t
Definition: RtypesCore.h:42
TMultiLayerPerceptron * fMLP
const Ranking * CreateRanking()
Definition: MethodTMlpANN.h:88
double Double_t
Definition: RtypesCore.h:55
int type
Definition: TGX11.cxx:120
void ReadWeightsFromStream(std::istream &istr)
read weights from stream since the MLP can not read from the stream, we 1st: write the weights to tem...
void AddWeightsXMLTo(void *parent) const
write weights to xml file
Abstract ClassifierFactory template that handles arbitrary types.
void CreateMLPOptions(TString)
translates options from option string into TMlpANN language
A TTree object has a header with a name and a title.
Definition: TTree.h:98
virtual void ReadWeightsFromStream(std::istream &)=0
void DeclareOptions()
define the options (their key words) that can be set in the option string know options: NCycles <inte...
virtual Bool_t HasAnalysisType(Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets)
TMlpANN can handle classification with 2 classes.