Logo ROOT   6.08/07
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 #ifndef ROOT_TMVA_MethodBase
54 #include "TMVA/MethodBase.h"
55 #endif
56 #ifndef ROOT_TMVA_PDF
57 #include "TMVA/PDF.h"
58 #endif
59 
60 class TH1D;
61 
62 namespace TMVA {
63 
64  class MethodLikelihood : public MethodBase {
65 
66  public:
67 
68  MethodLikelihood( const TString& jobName,
69  const TString& methodTitle,
70  DataSetInfo& theData,
71  const TString& theOption = "");
72 
73  MethodLikelihood( DataSetInfo& theData,
74  const TString& theWeightFile);
75 
76  virtual ~MethodLikelihood();
77 
79  UInt_t numberClasses, UInt_t numberTargets );
80 
81  // training method
82  void Train();
83 
84  // write weights to file
85  void WriteWeightsToStream( TFile& rf ) const;
86  void AddWeightsXMLTo( void* parent ) const;
87 
88  // read weights from file
89  void ReadWeightsFromStream( std::istream& istr );
90  void ReadWeightsFromStream( TFile& istr );
91  void ReadWeightsFromXML( void* wghtnode );
92  // calculate the MVA value
93  // the argument is used for internal ranking tests
94  Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
95 
96  // write method specific histos to target file
97  void WriteMonitoringHistosToFile() const;
98 
99  // ranking of input variables
100  const Ranking* CreateRanking();
101 
102  virtual void WriteOptionsToStream ( std::ostream& o, const TString& prefix ) const;
103 
104  protected:
105 
107 
108  // make ROOT-independent C++ class for classifier response (classifier-specific implementation)
109  void MakeClassSpecific( std::ostream&, const TString& ) const;
110 
111  // header and auxiliary classes
112  void MakeClassSpecificHeader( std::ostream&, const TString& = "" ) const;
113 
114  // get help message text
115  void GetHelpMessage() const;
116 
117  private:
118 
119  // returns transformed or non-transformed output
121 
122  // the option handling methods
123  void Init();
124  void DeclareOptions();
125  void ProcessOptions();
126 
127  // options
128  Double_t fEpsilon; // minimum number of likelihood (to avoid zero)
129  Bool_t fTransformLikelihoodOutput; // likelihood output is sigmoid-transformed
130 
131  Int_t fDropVariable; // for ranking test
132 
133  std::vector<TH1*>* fHistSig; // signal PDFs (histograms)
134  std::vector<TH1*>* fHistBgd; // background PDFs (histograms)
135  std::vector<TH1*>* fHistSig_smooth; // signal PDFs (smoothed histograms)
136  std::vector<TH1*>* fHistBgd_smooth; // background PDFs (smoothed histograms)
137 
138  PDF* fDefaultPDFLik; // pdf that contains default definitions
139  std::vector<PDF*>* fPDFSig; // list of PDFs (signal)
140  std::vector<PDF*>* fPDFBgd; // list of PDFs (background)
141 
142  // default initialisation called by all constructors
143 
144  // obsolete variables kept for backward combatibility
145  Int_t fNsmooth; // number of smooth passes
146  Int_t* fNsmoothVarS; // number of smooth passes
147  Int_t* fNsmoothVarB; // number of smooth passes
148  Int_t fAverageEvtPerBin; // average events per bin; used to calculate fNbins
149  Int_t* fAverageEvtPerBinVarS; // average events per bin; used to calculate fNbins
150  Int_t* fAverageEvtPerBinVarB; // average events per bin; used to calculate fNbins
151  TString fBorderMethodString; // the method to take care about "border" effects (string)
152  Float_t fKDEfineFactor; // fine tuning factor for Adaptive KDE
153  TString fKDEiterString; // Number of iterations (string)
154  TString fKDEtypeString; // Kernel type to use for KDE (string)
155  TString* fInterpolateString; // which interpolation method used for reference histograms (individual for each variable)
156 
157  ClassDef(MethodLikelihood,0); // Likelihood analysis ("non-parametric approach")
158  };
159 
160 } // namespace TMVA
161 
162 #endif // MethodLikelihood_H
void DeclareCompatibilityOptions()
options that are used ONLY for the READER to ensure backward compatibility they are hence without any...
void WriteWeightsToStream(TFile &rf) const
write reference PDFs to ROOT file
virtual void WriteOptionsToStream(std::ostream &o, const TString &prefix) const
write options to stream
float Float_t
Definition: RtypesCore.h:53
void Train()
create reference distributions (PDFs) from signal and background events: fill histograms and smooth t...
virtual ~MethodLikelihood()
destructor
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:50
EAnalysisType
Definition: Types.h:129
std::vector< TH1 * > * fHistSig
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
#define ClassDef(name, id)
Definition: Rtypes.h:254
void MakeClassSpecific(std::ostream &, const TString &) const
write specific classifier response
void ReadWeightsFromXML(void *wghtnode)
read weights from XML
Definition: PDF.h:71
std::vector< PDF * > * fPDFSig
std::vector< TH1 * > * fHistBgd_smooth
std::vector< TH1 * > * fHistSig_smooth
unsigned int UInt_t
Definition: RtypesCore.h:42
const Ranking * CreateRanking()
computes ranking of input variables
void WriteMonitoringHistosToFile() const
write histograms and PDFs to file for monitoring purposes
tomato 1-D histogram with a double per channel (see TH1 documentation)}
Definition: TH1.h:618
virtual Bool_t HasAnalysisType(Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets)
FDA can handle classification with 2 classes.
double Double_t
Definition: RtypesCore.h:55
void DeclareOptions()
define the options (their key words) that can be set in the option string TransformOutput <bool> tran...
std::vector< PDF * > * fPDFBgd
int type
Definition: TGX11.cxx:120
void MakeClassSpecificHeader(std::ostream &, const TString &="") const
write specific header of the classifier (mostly include files)
void Init()
default initialisation called by all constructors
void ReadWeightsFromStream(std::istream &istr)
read weight info from file nothing to do for this method
Abstract ClassifierFactory template that handles arbitrary types.
Double_t TransformLikelihoodOutput(Double_t ps, Double_t pb) const
returns transformed or non-transformed output
void GetHelpMessage() const
get help message text
std::vector< TH1 * > * fHistBgd
MethodLikelihood(const TString &jobName, const TString &methodTitle, DataSetInfo &theData, const TString &theOption="")
standard constructor
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 AddWeightsXMLTo(void *parent) const
write weights to XML