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 compatibility
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
float Float_t
Definition: RtypesCore.h:57
#define ClassDef(name, id)
Definition: Rtypes.h:335
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
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:617
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")
Int_t fDropVariable
for ranking test
const Ranking * CreateRanking()
computes ranking of input variables
void Train()
create reference distributions (PDFs) from signal and background events: fill histograms and smooth t...
TString fKDEtypeString
Kernel type to use for KDE (string)
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
Int_t * fNsmoothVarB
number of smooth passes
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...
Int_t * fAverageEvtPerBinVarS
average events per bin; used to calculate fNbins
void MakeClassSpecific(std::ostream &, const TString &) const
write specific classifier response
std::vector< TH1 * > * fHistSig
signal PDFs (histograms)
virtual ~MethodLikelihood()
destructor
void Init()
default initialisation called by all constructors
std::vector< TH1 * > * fHistBgd
background PDFs (histograms)
void ReadWeightsFromStream(std::istream &istr)
read weight info from file nothing to do for this method
std::vector< PDF * > * fPDFSig
list of PDFs (signal)
Double_t fEpsilon
minimum number of likelihood (to avoid zero)
TString * fInterpolateString
which interpolation method used for reference histograms (individual for each variable)
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
signal PDFs (smoothed histograms)
Bool_t fTransformLikelihoodOutput
likelihood output is sigmoid-transformed
void MakeClassSpecificHeader(std::ostream &, const TString &="") const
write specific header of the classifier (mostly include files)
TString fKDEiterString
Number of iterations (string)
Double_t TransformLikelihoodOutput(Double_t ps, Double_t pb) const
returns transformed or non-transformed output
std::vector< TH1 * > * fHistBgd_smooth
background PDFs (smoothed histograms)
TString fBorderMethodString
the method to take care about "border" effects (string)
std::vector< PDF * > * fPDFBgd
list of PDFs (background)
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
Int_t * fNsmoothVarS
number of smooth passes
Int_t fNsmooth
number of smooth passes
void AddWeightsXMLTo(void *parent) const
write weights to XML
Float_t fKDEfineFactor
fine tuning factor for Adaptive KDE
Int_t * fAverageEvtPerBinVarB
average events per bin; used to calculate fNbins
void DeclareOptions()
define the options (their key words) that can be set in the option string
Int_t fAverageEvtPerBin
average events per bin; used to calculate fNbins
PDF * fDefaultPDFLik
pdf that contains default definitions
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