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 * *
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 * (see tmva/doc/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
59 const TString& methodTitle,
61 const TString& theOption = "Fisher");
62
64 const TString& theWeightFile);
65
66 virtual ~MethodFisher( void );
67
69
70
71 // training method
72 void Train( void ) override;
73
75
76 // write weights to stream
77 void AddWeightsXMLTo ( void* parent ) const override;
78
79 // read weights from stream
80 void ReadWeightsFromStream( std::istream & i ) override;
81 void ReadWeightsFromXML ( void* wghtnode ) override;
82
83 // calculate the MVA value
84 Double_t GetMvaValue( Double_t* err = nullptr, Double_t* errUpper = nullptr ) override;
85
88
89 // ranking of input variables
90 const Ranking* CreateRanking() override;
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 override;
100
101 // get help message text
102 void GetHelpMessage() const override;
103
104 private:
105
106 // the option handling methods
107 void DeclareOptions() override;
108 void ProcessOptions() override;
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 ) override;
153
154 ClassDefOverride(MethodFisher,0); // Analysis of Fisher discriminant (Fisher or Mahalanobis approach)
155 };
156
157} // namespace TMVA
158
159#endif // MethodFisher_H
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
1-D histogram with a double per channel (see TH1 documentation)
Definition TH1.h:927
Class that contains all the data information.
Definition DataSetInfo.h:62
Virtual base Class for all MVA method.
Definition MethodBase.h:111
void ReadWeightsFromStream(std::istream &) override=0
Fisher and Mahalanobis Discriminants (Linear Discriminant Analysis)
void GetCov_Full(void)
compute full covariance matrix from sum of within and between matrices
Double_t fSumOfWeightsS
sum-of-weights for signal training events
void GetHelpMessage() const override
get help message text
TMatrixD * fBetw
between-class matrix
MethodFisher(const TString &jobName, const TString &methodTitle, DataSetInfo &dsi, const TString &theOption="Fisher")
standard constructor for the "Fisher"
TMatrixD * fCov
full covariance matrix
virtual ~MethodFisher(void)
destructor
Bool_t HasAnalysisType(Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets) override
Fisher can only handle classification with 2 classes.
void AddWeightsXMLTo(void *parent) const override
create XML description of Fisher classifier
void GetDiscrimPower(void)
computation of discrimination power indicator for each variable small values of "fWith" indicates lit...
TMatrixD * fWith
within-class matrix
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 Init(void) override
default initialization called by all constructors
Double_t fF0
offset
void DeclareOptions() override
MethodFisher options: format and syntax of option string: "type" where type is "Fisher" or "Mahalanob...
EFisherMethod fFisherMethod
Fisher or Mahalanobis.
std::vector< Double_t > * fFisherCoeff
Fisher coefficients.
std::vector< Double_t > * fDiscrimPow
discriminating power
void MakeClassSpecific(std::ostream &, const TString &) const override
write Fisher-specific classifier response
void ReadWeightsFromXML(void *wghtnode) override
read Fisher coefficients from xml weight file
void GetFisherCoeff(void)
Fisher = Sum { [coeff]*[variables] }.
void GetMean(void)
compute mean values of variables in each sample, and the overall means
void Train(void) override
computation of Fisher coefficients by series of matrix operations
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 ...
Double_t GetMvaValue(Double_t *err=nullptr, Double_t *errUpper=nullptr) override
returns the Fisher value (no fixed range)
void ProcessOptions() override
process user options
TString fTheMethod
Fisher or Mahalanobis.
const Ranking * CreateRanking() override
computes ranking of input variables
Double_t fSumOfWeightsB
sum-of-weights for background training events
void ReadWeightsFromStream(std::istream &i) override
read Fisher coefficients from weight file
Ranking for variables in method (implementation)
Definition Ranking.h:48
Basic string class.
Definition TString.h:138
create variable transformations