Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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#include "TMVA/MethodBase.h"
48#include "TMatrixDfwd.h"
49
50class TH1D;
51
52namespace TMVA {
53
54 class MethodFisher : public MethodBase {
55
56 public:
57
58 MethodFisher( const TString& jobName,
59 const TString& methodTitle,
60 DataSetInfo& dsi,
61 const TString& theOption = "Fisher");
62
64 const TString& theWeightFile);
65
66 virtual ~MethodFisher( void );
67
68 virtual Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
69
70
71 // training method
72 void Train( void );
73
75
76 // write weights to stream
77 void AddWeightsXMLTo ( void* parent ) const;
78
79 // read weights from stream
80 void ReadWeightsFromStream( std::istream & i );
81 void ReadWeightsFromXML ( void* wghtnode );
82
83 // calculate the MVA value
84 Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
85
88
89 // ranking of input variables
90 const Ranking* CreateRanking();
91
92 // nice output
93 void PrintCoefficients( void );
94
95
96 protected:
97
98 // make ROOT-independent C++ class for classifier response (classifier-specific implementation)
99 void MakeClassSpecific( std::ostream&, const TString& ) const;
100
101 // get help message text
102 void GetHelpMessage() const;
103
104 private:
105
106 // the option handling methods
107 void DeclareOptions();
108 void ProcessOptions();
109
110 // Initialization and allocation of matrices
111 void InitMatrices( void );
112
113 // get mean value of variables
114 void GetMean( void );
115
116 // get matrix of covariance within class
117 void GetCov_WithinClass( void );
118
119 // get matrix of covariance between class
120 void GetCov_BetweenClass( void );
121
122 // and the full covariance matrix
123 void GetCov_Full( void );
124
125 // get discriminating power
126 void GetDiscrimPower( void );
127
128 // get Fisher coefficients
129 void GetFisherCoeff( void );
130
131 // matrix of variables means: S, B, S+B vs. variables
133
134 // method to be used
135 TString fTheMethod; // Fisher or Mahalanobis
136 EFisherMethod fFisherMethod; // Fisher or Mahalanobis
137
138 // covariance matrices
139 TMatrixD *fBetw; // between-class matrix
140 TMatrixD *fWith; // within-class matrix
141 TMatrixD *fCov; // full covariance matrix
142
143 // number of events (sumOfWeights)
144 Double_t fSumOfWeightsS; // sum-of-weights for signal training events
145 Double_t fSumOfWeightsB; // sum-of-weights for background training events
146
147 std::vector<Double_t>* fDiscrimPow; // discriminating power
148 std::vector<Double_t>* fFisherCoeff; // Fisher coefficients
149 Double_t fF0; // offset
150
151 // default initialisation called by all constructors
152 void Init( void );
153
154 ClassDef(MethodFisher,0); // Analysis of Fisher discriminant (Fisher or Mahalanobis approach)
155 };
156
157} // namespace TMVA
158
159#endif // MethodFisher_H
double Double_t
Definition RtypesCore.h:59
#define ClassDef(name, id)
Definition Rtypes.h:325
int type
Definition TGX11.cxx:121
1-D histogram with a double per channel (see TH1 documentation)}
Definition TH1.h:618
Class that contains all the data information.
Definition DataSetInfo.h:62
Virtual base Class for all MVA method.
Definition MethodBase.h:111
virtual void ReadWeightsFromStream(std::istream &)=0
Fisher and Mahalanobis Discriminants (Linear Discriminant Analysis)
void ReadWeightsFromStream(std::istream &i)
read Fisher coefficients from weight file
void GetCov_Full(void)
compute full covariance matrix from sum of within and between matrices
void GetHelpMessage() const
get help message text
const Ranking * CreateRanking()
computes ranking of input variables
virtual ~MethodFisher(void)
destructor
void Train(void)
computation of Fisher coefficients by series of matrix operations
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)
void PrintCoefficients(void)
display Fisher coefficients and discriminating power for each variable check maximum length of variab...
void GetCov_BetweenClass(void)
the matrix of covariance 'between class' reflects the dispersion of the events of a class relative to...
void MakeClassSpecific(std::ostream &, const TString &) const
write Fisher-specific classifier response
EFisherMethod fFisherMethod
std::vector< Double_t > * fFisherCoeff
std::vector< Double_t > * fDiscrimPow
void ReadWeightsFromXML(void *wghtnode)
read Fisher coefficients from xml weight file
void ProcessOptions()
process user options
void GetFisherCoeff(void)
Fisher = Sum { [coeff]*[variables] }.
void GetMean(void)
compute mean values of variables in each sample, and the overall means
void AddWeightsXMLTo(void *parent) const
create XML description of Fisher classifier
void DeclareOptions()
MethodFisher options: format and syntax of option string: "type" where type is "Fisher" or "Mahalanob...
Double_t GetMvaValue(Double_t *err=0, Double_t *errUpper=0)
returns the Fisher value (no fixed range)
void InitMatrices(void)
initialization method; creates global matrices and vectors
void GetCov_WithinClass(void)
the matrix of covariance 'within class' reflects the dispersion of the events relative to the center ...
void Init(void)
default initialization called by all constructors
Ranking for variables in method (implementation)
Definition Ranking.h:48
Basic string class.
Definition TString.h:136
create variable transformations