Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
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 #include "TMVA/MethodBase.h"
44 
45 class TMultiLayerPerceptron;
46 
47 namespace TMVA {
48 
49  class MethodTMlpANN : public MethodBase {
50 
51  public:
52 
53  MethodTMlpANN( const TString& jobName,
54  const TString& methodTitle,
55  DataSetInfo& theData,
56  const TString& theOption = "3000:N-1:N-2");
57 
58  MethodTMlpANN( DataSetInfo& theData,
59  const TString& theWeightFile);
60 
61  virtual ~MethodTMlpANN( void );
62 
63  virtual Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
64 
65  // training method
66  void Train( void );
67 
68  using MethodBase::ReadWeightsFromStream;
69 
70  // write weights to file
71  void AddWeightsXMLTo( void* parent ) const;
72 
73  // read weights from file
74  void ReadWeightsFromStream( std::istream& istr );
75  void ReadWeightsFromXML(void* wghtnode);
76 
77  // calculate the MVA value ...
78  // - here it is just a dummy, as it is done in the overwritten
79  // - PrepareEvaluationtree... ugly but necessary due to the structure
80  // of TMultiLayerPercepton in ROOT grr... :-(
81  Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
82 
83  void SetHiddenLayer(TString hiddenlayer = "" ) { fHiddenLayer=hiddenlayer; }
84 
85  // ranking of input variables
86  const Ranking* CreateRanking() { return 0; }
87 
88  // make ROOT-independent C++ class
89  void MakeClass( const TString& classFileName = TString("") ) const;
90 
91  protected:
92 
93  // make ROOT-independent C++ class for classifier response (classifier-specific implementation)
94  void MakeClassSpecific( std::ostream&, const TString& ) const;
95 
96  // get help message text
97  void GetHelpMessage() const;
98 
99  private:
100 
101  // the option handling methods
102  void DeclareOptions();
103  void ProcessOptions();
104 
105  void CreateMLPOptions( TString );
106 
107  // option string
108  TString fLayerSpec; // Layer specification option
109 
110  TMultiLayerPerceptron* fMLP; // the TMLP
111  TTree* fLocalTrainingTree; // local copy of training tree
112 
113  TString fHiddenLayer; // string containing the hidden layer structure
114  Int_t fNcycles; // number of training cycles
115  Double_t fValidationFraction; // fraction of events in training tree used for cross validation
116  TString fMLPBuildOptions; // option string to build the mlp
117 
118  TString fLearningMethod; // the learning method (given via option string)
119 
120  // default initialisation called by all constructors
121  void Init( void );
122 
123  ClassDef(MethodTMlpANN,0); // Implementation of interface for TMultiLayerPerceptron
124  };
125 
126 } // namespace TMVA
127 
128 #endif