ROOT
master
Reference Guide
Loading...
Searching...
No Matches
SeparationBase.cxx
Go to the documentation of this file.
1
// @(#)root/tmva $Id$
2
// Author: Andreas Hoecker, Joerg Stelzer, Helge Voss
3
4
/**********************************************************************************
5
* Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6
* Package: TMVA *
7
* Class : SeparationBase *
8
* *
9
* *
10
* Description: An interface to different separation criteria used in various *
11
* training algorithms, as there are: *
12
* *
13
* There are two things: the Separation Index, and the Separation Gain *
14
* Separation Index: *
15
* Measure of the "purity" of a sample. If all elements (events) in the *
16
* sample belong to the same class (e.g. signal or backgr), than the *
17
* separation index is 0 (meaning 100% purity (or 0% purity as it is *
18
* symmetric. The index becomes maximal, for perfectly mixed samples *
19
* eg. purity=50% , N_signal = N_bkg *
20
* *
21
* Separation Gain: *
22
* the measure of how the quality of separation of the sample increases *
23
* by splitting the sample e.g. into a "left-node" and a "right-node" *
24
* (N * Index_parent) - (N_left * Index_left) - (N_right * Index_right) *
25
* this is then the quality criterion which is optimized for when trying *
26
* to increase the information in the system (making the best selection *
27
* *
28
* Authors (alphabetical): *
29
* Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
30
* Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
31
* Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada *
32
* *
33
* Copyright (c) 2005: *
34
* CERN, Switzerland *
35
* U. of Victoria, Canada *
36
* Heidelberg U., Germany *
37
* *
38
* Redistribution and use in source and binary forms, with or without *
39
* modification, are permitted according to the terms listed in LICENSE *
40
* (see tmva/doc/LICENSE) *
41
**********************************************************************************/
42
43
/*! \class TMVA::SeparationBase
44
\ingroup TMVA
45
An interface to calculate the "SeparationGain" for different
46
separation criteria used in various training algorithms
47
48
There are two things: the Separation Index, and the Separation Gain
49
Separation Index:
50
Measure of the "purity" of a sample. If all elements (events) in the
51
sample belong to the same class (e.g. signal or background), than the
52
separation index is 0 (meaning 100% purity (or 0% purity as it is
53
symmetric. The index becomes maximal, for perfectly mixed samples
54
eg. purity=50% , N_signal = N_bkg
55
56
Separation Gain:
57
the measure of how the quality of separation of the sample increases
58
by splitting the sample e.g. into a "left-node" and a "right-node"
59
(N * Index_parent) - (N_left * Index_left) - (N_right * Index_right)
60
this is then the quality criterion which is optimized for when trying
61
to increase the information in the system (making the best selection
62
*/
63
#include "
TMVA/SeparationBase.h
"
64
65
#include "
TMath.h
"
66
#include "
TString.h
"
67
68
#include <iostream>
69
#include <limits>
70
71
ClassImp
(
TMVA::SeparationBase
);
72
73
////////////////////////////////////////////////////////////////////////////////
74
/// Constructor.
75
76
TMVA::SeparationBase::SeparationBase
() :
77
fName(
""
),
78
fPrecisionCut(
TMath
::Sqrt(std::numeric_limits<
double
>::epsilon()))
79
{
80
// default constructor
81
}
82
83
////////////////////////////////////////////////////////////////////////////////
84
/// Copy constructor.
85
86
TMVA::SeparationBase::SeparationBase
(
const
SeparationBase
& s ) :
87
fName(s.fName),
88
fPrecisionCut(
TMath
::Sqrt(std::numeric_limits<
double
>::epsilon()))
89
{
90
// copy constructor
91
}
92
93
////////////////////////////////////////////////////////////////////////////////
94
/// Separation Gain:
95
/// the measure of how the quality of separation of the sample increases
96
/// by splitting the sample e.g. into a "left-node" and a "right-node"
97
/// (N * Index_parent) - (N_left * Index_left) - (N_right * Index_right)
98
/// this is then the quality criterion which is optimized for when trying
99
/// to increase the information in the system (making the best selection
100
101
Double_t
TMVA::SeparationBase::GetSeparationGain
(
const
Double_t
nSelS,
const
Double_t
nSelB,
102
const
Double_t
nTotS,
const
Double_t
nTotB)
103
{
104
if
( (nTotS-nSelS)==nSelS && (nTotB-nSelB)==nSelB)
return
0.;
105
106
// Double_t parentIndex = (nTotS+nTotB) *this->GetSeparationIndex(nTotS,nTotB);
107
108
// Double_t leftIndex = ( ((nTotS - nSelS) + (nTotB - nSelB))
109
// * this->GetSeparationIndex(nTotS-nSelS,nTotB-nSelB) );
110
// Double_t rightIndex = (nSelS+nSelB) * this->GetSeparationIndex(nSelS,nSelB);
111
112
113
Double_t
parentIndex
= this->GetSeparationIndex(nTotS,nTotB);
114
115
Double_t
leftIndex
= ( ((nTotS - nSelS) + (nTotB - nSelB))/(nTotS+nTotB)
116
* this->GetSeparationIndex(nTotS-nSelS,nTotB-nSelB) );
117
Double_t
rightIndex
= (nSelS+nSelB)/(nTotS+nTotB) * this->GetSeparationIndex(nSelS,nSelB);
118
119
Double_t
diff
=
parentIndex
-
leftIndex
-
rightIndex
;
120
//Double_t diff = (parentIndex - leftIndex - rightIndex)/(nTotS+nTotB);
121
122
if
(
diff
<fPrecisionCut ) {
123
// std::cout << " Warning value in GetSeparation is below numerical precision "
124
// << diff/parentIndex
125
// << std::endl;
126
return
0;
127
}
128
129
return
diff
;
130
}
131
132
ClassImp
#define ClassImp(name)
Definition
Rtypes.h:382
SeparationBase.h
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
TMath.h
TString.h
ROOT::Detail::TRangeCast
Definition
TCollection.h:311
TMVA::SeparationBase
An interface to calculate the "SeparationGain" for different separation criteria used in various trai...
Definition
SeparationBase.h:82
TMVA::SeparationBase::GetSeparationGain
virtual Double_t GetSeparationGain(const Double_t nSelS, const Double_t nSelB, const Double_t nTotS, const Double_t nTotB)
Separation Gain: the measure of how the quality of separation of the sample increases by splitting th...
Definition
SeparationBase.cxx:101
TMVA::SeparationBase::SeparationBase
SeparationBase()
Constructor.
Definition
SeparationBase.cxx:76
double
TMath
TMath.
Definition
TMathBase.h:35
tmva
tmva
src
SeparationBase.cxx
ROOT master - Reference Guide Generated on Sun Jan 26 2025 04:17:43 (GVA Time) using Doxygen 1.10.0