Logo ROOT  
Reference Guide
MethodLikelihood.h
Go to the documentation of this file.
1// @(#)root/tmva $Id$
2// Author: Andreas Hoecker, Joerg Stelzer, Helge Voss, Kai Voss, Peter Speckmayer, Eckhard von Toerne, Jan Therhaag
3
4/**********************************************************************************
5 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6 * Package: TMVA *
7 * Class : MethodLikelihood *
8 * Web : http://tmva.sourceforge.net *
9 * *
10 * Description: *
11 * Likelihood analysis ("non-parametric approach") *
12 * Also implemented is a "diagonalized likelihood approach", *
13 * which improves over the uncorrelated likelihood ansatz by transforming *
14 * linearly the input variables into a diagonal space, using the square-root *
15 * of the covariance matrix. This approach can be chosen by inserting *
16 * the letter "D" into the option string. *
17 * *
18 * Authors (alphabetical): *
19 * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
20 * Peter Speckmayer <Peter.Speckmazer@cern.ch> - CERN, Switzerland *
21 * Joerg Stelzer <Joerg.Stelzer@cern.ch> - CERN, Switzerland *
22 * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
23 * Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada *
24 * Jan Therhaag <Jan.Therhaag@cern.ch> - U of Bonn, Germany *
25 * Eckhard v. Toerne <evt@uni-bonn.de> - U of Bonn, Germany *
26 * *
27 * Copyright (c) 2005-2011: *
28 * CERN, Switzerland *
29 * U. of Victoria, Canada *
30 * MPI-K Heidelberg, Germany *
31 * U. of Bonn, Germany *
32 * *
33 * Redistribution and use in source and binary forms, with or without *
34 * modification, are permitted according to the terms listed in LICENSE *
35 * (http://tmva.sourceforge.net/LICENSE) *
36 **********************************************************************************/
37
38#ifndef ROOT_TMVA_MethodLikelihood
39#define ROOT_TMVA_MethodLikelihood
40
41//////////////////////////////////////////////////////////////////////////
42// //
43// MethodLikelihood //
44// //
45// Likelihood analysis ("non-parametric approach") //
46// Also implemented is a "diagonalized likelihood approach", //
47// which improves over the uncorrelated likelihood ansatz by //
48// transforming linearly the input variables into a diagonal space, //
49// using the square-root of the covariance matrix //
50// //
51//////////////////////////////////////////////////////////////////////////
52
53#include "TMVA/MethodBase.h"
54#include "TMVA/PDF.h"
55#include <vector>
56
57class TH1D;
58
59namespace TMVA {
60
62
63 public:
64
65 MethodLikelihood( const TString& jobName,
66 const TString& methodTitle,
67 DataSetInfo& theData,
68 const TString& theOption = "");
69
71 const TString& theWeightFile);
72
73 virtual ~MethodLikelihood();
74
76 UInt_t numberClasses, UInt_t numberTargets );
77
78 // training method
79 void Train();
80
81 // write weights to file
82 void WriteWeightsToStream( TFile& rf ) const;
83 void AddWeightsXMLTo( void* parent ) const;
84
85 // read weights from file
86 void ReadWeightsFromStream( std::istream& istr );
87 void ReadWeightsFromStream( TFile& istr );
88 void ReadWeightsFromXML( void* wghtnode );
89 // calculate the MVA value
90 // the argument is used for internal ranking tests
91 Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
92
93 // write method specific histos to target file
94 void WriteMonitoringHistosToFile() const;
95
96 // ranking of input variables
97 const Ranking* CreateRanking();
98
99 virtual void WriteOptionsToStream ( std::ostream& o, const TString& prefix ) const;
100
101 protected:
102
104
105 // make ROOT-independent C++ class for classifier response (classifier-specific implementation)
106 void MakeClassSpecific( std::ostream&, const TString& ) const;
107
108 // header and auxiliary classes
109 void MakeClassSpecificHeader( std::ostream&, const TString& = "" ) const;
110
111 // get help message text
112 void GetHelpMessage() const;
113
114 private:
115
116 // returns transformed or non-transformed output
118
119 // the option handling methods
120 void Init();
121 void DeclareOptions();
122 void ProcessOptions();
123
124 // options
125 Double_t fEpsilon; // minimum number of likelihood (to avoid zero)
126 Bool_t fTransformLikelihoodOutput; // likelihood output is sigmoid-transformed
127
128 Int_t fDropVariable; // for ranking test
129
130 std::vector<TH1*>* fHistSig; // signal PDFs (histograms)
131 std::vector<TH1*>* fHistBgd; // background PDFs (histograms)
132 std::vector<TH1*>* fHistSig_smooth; // signal PDFs (smoothed histograms)
133 std::vector<TH1*>* fHistBgd_smooth; // background PDFs (smoothed histograms)
134
135 PDF* fDefaultPDFLik; // pdf that contains default definitions
136 std::vector<PDF*>* fPDFSig; // list of PDFs (signal)
137 std::vector<PDF*>* fPDFBgd; // list of PDFs (background)
138
139 // default initialisation called by all constructors
140
141 // obsolete variables kept for backward combatibility
142 Int_t fNsmooth; // number of smooth passes
143 Int_t* fNsmoothVarS; // number of smooth passes
144 Int_t* fNsmoothVarB; // number of smooth passes
145 Int_t fAverageEvtPerBin; // average events per bin; used to calculate fNbins
146 Int_t* fAverageEvtPerBinVarS; // average events per bin; used to calculate fNbins
147 Int_t* fAverageEvtPerBinVarB; // average events per bin; used to calculate fNbins
148 TString fBorderMethodString; // the method to take care about "border" effects (string)
149 Float_t fKDEfineFactor; // fine tuning factor for Adaptive KDE
150 TString fKDEiterString; // Number of iterations (string)
151 TString fKDEtypeString; // Kernel type to use for KDE (string)
152 TString* fInterpolateString; // which interpolation method used for reference histograms (individual for each variable)
153
154 ClassDef(MethodLikelihood,0); // Likelihood analysis ("non-parametric approach")
155 };
156
157} // namespace TMVA
158
159#endif // MethodLikelihood_H
int Int_t
Definition: RtypesCore.h:45
unsigned int UInt_t
Definition: RtypesCore.h:46
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
float Float_t
Definition: RtypesCore.h:57
#define ClassDef(name, id)
Definition: Rtypes.h:325
int type
Definition: TGX11.cxx:121
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:54
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
Likelihood analysis ("non-parametric approach")
const Ranking * CreateRanking()
computes ranking of input variables
void Train()
create reference distributions (PDFs) from signal and background events: fill histograms and smooth t...
virtual Bool_t HasAnalysisType(Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets)
FDA can handle classification with 2 classes.
virtual void WriteOptionsToStream(std::ostream &o, const TString &prefix) const
write options to stream
void WriteMonitoringHistosToFile() const
write histograms and PDFs to file for monitoring purposes
void DeclareCompatibilityOptions()
options that are used ONLY for the READER to ensure backward compatibility they are hence without any...
void MakeClassSpecific(std::ostream &, const TString &) const
write specific classifier response
std::vector< TH1 * > * fHistSig
virtual ~MethodLikelihood()
destructor
void Init()
default initialisation called by all constructors
std::vector< TH1 * > * fHistBgd
void ReadWeightsFromStream(std::istream &istr)
read weight info from file nothing to do for this method
std::vector< PDF * > * fPDFSig
MethodLikelihood(const TString &jobName, const TString &methodTitle, DataSetInfo &theData, const TString &theOption="")
standard constructor
void GetHelpMessage() const
get help message text
Double_t GetMvaValue(Double_t *err=0, Double_t *errUpper=0)
returns the likelihood estimator for signal fill a new Likelihood branch into the testTree
void ReadWeightsFromXML(void *wghtnode)
read weights from XML
std::vector< TH1 * > * fHistSig_smooth
void MakeClassSpecificHeader(std::ostream &, const TString &="") const
write specific header of the classifier (mostly include files)
Double_t TransformLikelihoodOutput(Double_t ps, Double_t pb) const
returns transformed or non-transformed output
std::vector< TH1 * > * fHistBgd_smooth
std::vector< PDF * > * fPDFBgd
void ProcessOptions()
process user options reference cut value to distinguish signal-like from background-like events
void WriteWeightsToStream(TFile &rf) const
write reference PDFs to ROOT file
void AddWeightsXMLTo(void *parent) const
write weights to XML
void DeclareOptions()
define the options (their key words) that can be set in the option string
PDF wrapper for histograms; uses user-defined spline interpolation.
Definition: PDF.h:63
Ranking for variables in method (implementation)
Definition: Ranking.h:48
EAnalysisType
Definition: Types.h:126
Basic string class.
Definition: TString.h:136
static constexpr double ps
create variable transformations