Logo ROOT   6.08/07
Reference Guide
MethodFisher.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Andreas Hoecker, Xavier Prudent, Joerg Stelzer, Helge Voss, Kai Voss
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : MethodFisher *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Analysis of Fisher discriminant (Fisher or Mahalanobis approach) *
12  * *
13  * Original author of this Fisher-Discriminant implementation: *
14  * Andre Gaidot, CEA-France; *
15  * (Translation from FORTRAN) *
16  * *
17  * Authors (alphabetical): *
18  * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
19  * Xavier Prudent <prudent@lapp.in2p3.fr> - LAPP, France *
20  * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
21  * Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada *
22  * *
23  * Copyright (c) 2005: *
24  * CERN, Switzerland *
25  * U. of Victoria, Canada *
26  * MPI-K Heidelberg, Germany *
27  * LAPP, Annecy, France *
28  * *
29  * Redistribution and use in source and binary forms, with or without *
30  * modification, are permitted according to the terms listed in LICENSE *
31  * (http://tmva.sourceforge.net/LICENSE) *
32  **********************************************************************************/
33 
34 #ifndef ROOT_TMVA_MethodFisher
35 #define ROOT_TMVA_MethodFisher
36 
37 //////////////////////////////////////////////////////////////////////////
38 // //
39 // MethodFisher //
40 // //
41 // Analysis of Fisher discriminant (Fisher or Mahalanobis approach) //
42 // //
43 //////////////////////////////////////////////////////////////////////////
44 
45 #include <vector>
46 
47 #ifndef ROOT_TMVA_MethodBase
48 #include "TMVA/MethodBase.h"
49 #endif
50 #ifndef ROOT_TMatrixDfwd
51 #include "TMatrixDfwd.h"
52 #endif
53 
54 class TH1D;
55 
56 namespace TMVA {
57 
58  class MethodFisher : public MethodBase {
59 
60  public:
61 
62  MethodFisher( const TString& jobName,
63  const TString& methodTitle,
64  DataSetInfo& dsi,
65  const TString& theOption = "Fisher");
66 
68  const TString& theWeightFile);
69 
70  virtual ~MethodFisher( void );
71 
72  virtual Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
73 
74 
75  // training method
76  void Train( void );
77 
79 
80  // write weights to stream
81  void AddWeightsXMLTo ( void* parent ) const;
82 
83  // read weights from stream
84  void ReadWeightsFromStream( std::istream & i );
85  void ReadWeightsFromXML ( void* wghtnode );
86 
87  // calculate the MVA value
88  Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
89 
92 
93  // ranking of input variables
94  const Ranking* CreateRanking();
95 
96  // nice output
97  void PrintCoefficients( void );
98 
99 
100  protected:
101 
102  // make ROOT-independent C++ class for classifier response (classifier-specific implementation)
103  void MakeClassSpecific( std::ostream&, const TString& ) const;
104 
105  // get help message text
106  void GetHelpMessage() const;
107 
108  private:
109 
110  // the option handling methods
111  void DeclareOptions();
112  void ProcessOptions();
113 
114  // Initialization and allocation of matrices
115  void InitMatrices( void );
116 
117  // get mean value of variables
118  void GetMean( void );
119 
120  // get matrix of covariance within class
121  void GetCov_WithinClass( void );
122 
123  // get matrix of covariance between class
124  void GetCov_BetweenClass( void );
125 
126  // and the full covariance matrix
127  void GetCov_Full( void );
128 
129  // get discriminating power
130  void GetDiscrimPower( void );
131 
132  // get Fisher coefficients
133  void GetFisherCoeff( void );
134 
135  // matrix of variables means: S, B, S+B vs. variables
137 
138  // method to be used
139  TString fTheMethod; // Fisher or Mahalanobis
140  EFisherMethod fFisherMethod; // Fisher or Mahalanobis
141 
142  // covariance matrices
143  TMatrixD *fBetw; // between-class matrix
144  TMatrixD *fWith; // within-class matrix
145  TMatrixD *fCov; // full covariance matrix
146 
147  // number of events (sumOfWeights)
148  Double_t fSumOfWeightsS; // sum-of-weights for signal training events
149  Double_t fSumOfWeightsB; // sum-of-weights for background training events
150 
151  std::vector<Double_t>* fDiscrimPow; // discriminating power
152  std::vector<Double_t>* fFisherCoeff; // Fisher coefficients
153  Double_t fF0; // offset
154 
155  // default initialisation called by all constructors
156  void Init( void );
157 
158  ClassDef(MethodFisher,0); // Analysis of Fisher discriminant (Fisher or Mahalanobis approach)
159  };
160 
161 } // namespace TMVA
162 
163 #endif // MethodFisher_H
void GetCov_BetweenClass(void)
the matrix of covariance &#39;between class&#39; reflects the dispersion of the events of a class relative to...
const Ranking * CreateRanking()
computes ranking of input variables
MethodFisher(const TString &jobName, const TString &methodTitle, DataSetInfo &dsi, const TString &theOption="Fisher")
standard constructor for the "Fisher"
void ReadWeightsFromStream(std::istream &i)
read Fisher coefficients from weight file
virtual ~MethodFisher(void)
destructor
void GetCov_Full(void)
compute full covariance matrix from sum of within and between matrices
void GetDiscrimPower(void)
computation of discrimination power indicator for each variable small values of "fWith" indicates lit...
virtual Bool_t HasAnalysisType(Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets)
Fisher can only handle classification with 2 classes.
EFisherMethod GetFisherMethod(void)
Definition: MethodFisher.h:91
Double_t fSumOfWeightsS
Definition: MethodFisher.h:148
EAnalysisType
Definition: Types.h:129
void AddWeightsXMLTo(void *parent) const
create XML description of Fisher classifier
Basic string class.
Definition: TString.h:137
TMatrixD * fMeanMatx
Definition: MethodFisher.h:136
bool Bool_t
Definition: RtypesCore.h:59
std::vector< Double_t > * fFisherCoeff
Definition: MethodFisher.h:152
void GetHelpMessage() const
get help message text
#define ClassDef(name, id)
Definition: Rtypes.h:254
Double_t fSumOfWeightsB
Definition: MethodFisher.h:149
EFisherMethod fFisherMethod
Definition: MethodFisher.h:140
Double_t GetMvaValue(Double_t *err=0, Double_t *errUpper=0)
returns the Fisher value (no fixed range)
void Train(void)
computation of Fisher coefficients by series of matrix operations
void ReadWeightsFromXML(void *wghtnode)
read Fisher coefficients from xml weight file
void ProcessOptions()
process user options
unsigned int UInt_t
Definition: RtypesCore.h:42
void InitMatrices(void)
initializaton method; creates global matrices and vectors
tomato 1-D histogram with a double per channel (see TH1 documentation)}
Definition: TH1.h:618
void DeclareOptions()
MethodFisher options: format and syntax of option string: "type" where type is "Fisher" or "Mahalanob...
double Double_t
Definition: RtypesCore.h:55
void GetMean(void)
compute mean values of variables in each sample, and the overall means
void GetCov_WithinClass(void)
the matrix of covariance &#39;within class&#39; reflects the dispersion of the events relative to the center ...
int type
Definition: TGX11.cxx:120
void MakeClassSpecific(std::ostream &, const TString &) const
write Fisher-specific classifier response
Abstract ClassifierFactory template that handles arbitrary types.
void PrintCoefficients(void)
display Fisher coefficients and discriminating power for each variable check maximum length of variab...
virtual void ReadWeightsFromStream(std::istream &)=0
void GetFisherCoeff(void)
Fisher = Sum { [coeff]*[variables] }.
std::vector< Double_t > * fDiscrimPow
Definition: MethodFisher.h:151
void Init(void)
default initialization called by all constructors