Belle II Software light-2405-quaxo
FastBDTOptions Class Reference

Options for the FANN MVA method. More...

#include <FastBDT.h>

Inheritance diagram for FastBDTOptions:
Collaboration diagram for FastBDTOptions:

Public Member Functions

virtual void load (const boost::property_tree::ptree &pt) override
 Load mechanism to load Options from a xml tree.
 
virtual void save (boost::property_tree::ptree &pt) const override
 Save mechanism to store Options in a xml tree.
 
virtual po::options_description getDescription () override
 Returns a program options description for all available options.
 
virtual std::string getMethod () const override
 Return method name.
 

Public Attributes

unsigned int m_nTrees = 200
 Number of trees.
 
unsigned int m_nCuts = 8
 Number of cut Levels = log_2(Number of Cuts)
 
unsigned int m_nLevels = 3
 Depth of tree.
 
double m_shrinkage = 0.1
 Shrinkage during the boosting step.
 
double m_randRatio = 0.5
 Fraction of data to use in the stochastic training.
 

Detailed Description

Options for the FANN MVA method.

Definition at line 53 of file FastBDT.h.

Member Function Documentation

◆ getDescription()

po::options_description getDescription ( )
overridevirtual

Returns a program options description for all available options.

Implements Options.

Definition at line 126 of file FastBDT.cc.

127 {
128 po::options_description description("FastBDT options");
129 description.add_options()
130 ("nTrees", po::value<unsigned int>(&m_nTrees), "Number of trees in the forest. Reasonable values are between 10 and 1000")
131 ("nLevels", po::value<unsigned int>(&m_nLevels)->notifier(check_bounds<unsigned int>(0, 20, "nLevels")),
132 "Depth d of trees. The last layer of the tree will contain 2^d bins. Maximum is 20. Reasonable values are 2 and 6.")
133 ("shrinkage", po::value<double>(&m_shrinkage)->notifier(check_bounds<double>(0.0, 1.0, "shrinkage")),
134 "Shrinkage of the boosting algorithm. Reasonable values are between 0.01 and 1.0.")
135 ("nCutLevels", po::value<unsigned int>(&m_nCuts)->notifier(check_bounds<unsigned int>(0, 20, "nCutLevels")),
136 "Number of cut levels N per feature. 2^N Bins will be used per feature. Reasonable values are between 6 and 12.")
137#if FastBDT_VERSION_MAJOR >= 5
138 ("individualNCutLevels", po::value<std::vector<unsigned int>>(&m_individual_nCuts)->multitoken()->notifier(
139 check_bounds_vector<unsigned int>(0, 20, "individualNCutLevels")),
140 "Number of cut levels N per feature. 2^N Bins will be used per feature. Reasonable values are between 6 and 12. One value per feature (including spectators) should be provided, if parameter is not set the global value specified by nCutLevels is used for all features.")
141 ("sPlot", po::value<bool>(&m_sPlot),
142 "Since in sPlot each event enters twice, this option modifies the sampling algorithm so that the matching signal and background events are selected together.")
143 ("flatnessLoss", po::value<double>(&m_flatnessLoss),
144 "Activate Flatness Loss, all spectator variables are assumed to be variables in which the signal and background efficiency should be flat. negative values deactivates flatness loss.")
145 ("purityTransformation", po::value<bool>(&m_purityTransformation),
146 "Activates purity transformation on all features: Add the purity transformed of all features in addition to the training. This will double the number of features and slow down the inference considerably")
147 ("individualPurityTransformation", po::value<std::vector<bool>>(&m_individualPurityTransformation)->multitoken(),
148 "Activates purity transformation for each feature: Vector of boolean values which decide if the purity transformed of the feature should be added in addition to this training.")
149#endif
150 ("randRatio", po::value<double>(&m_randRatio)->notifier(check_bounds<double>(0.0, 1.0001, "randRatio")),
151 "Fraction of the data sampled each training iteration. Reasonable values are between 0.1 and 1.0.");
152 return description;
153 }
double m_randRatio
Fraction of data to use in the stochastic training.
Definition: FastBDT.h:82
double m_shrinkage
Shrinkage during the boosting step.
Definition: FastBDT.h:81
unsigned int m_nLevels
Depth of tree.
Definition: FastBDT.h:80
unsigned int m_nCuts
Number of cut Levels = log_2(Number of Cuts)
Definition: FastBDT.h:79
unsigned int m_nTrees
Number of trees.
Definition: FastBDT.h:78

◆ getMethod()

virtual std::string getMethod ( ) const
inlineoverridevirtual

Return method name.

Implements SpecificOptions.

Definition at line 76 of file FastBDT.h.

76{ return "FastBDT"; }

◆ load()

void load ( const boost::property_tree::ptree &  pt)
overridevirtual

Load mechanism to load Options from a xml tree.

Parameters
ptxml tree

Implements Options.

Definition at line 53 of file FastBDT.cc.

54 {
55 int version = pt.get<int>("FastBDT_version");
56#if FastBDT_VERSION_MAJOR >= 5
57 if (version != 1 and version != 2) {
58 B2ERROR("Unknown weightfile version " << std::to_string(version));
59 throw std::runtime_error("Unknown weightfile version " + std::to_string(version));
60 }
61#else
62 if (version != 1) {
63 B2ERROR("Unknown weightfile version " << std::to_string(version));
64 throw std::runtime_error("Unknown weightfile version " + std::to_string(version));
65 }
66#endif
67 m_nTrees = pt.get<int>("FastBDT_nTrees");
68 m_nCuts = pt.get<int>("FastBDT_nCuts");
69 m_nLevels = pt.get<int>("FastBDT_nLevels");
70 m_shrinkage = pt.get<double>("FastBDT_shrinkage");
71 m_randRatio = pt.get<double>("FastBDT_randRatio");
72
73#if FastBDT_VERSION_MAJOR >= 5
74 if (version > 1) {
75
76 m_flatnessLoss = pt.get<double>("FastBDT_flatnessLoss");
77 m_sPlot = pt.get<bool>("FastBDT_sPlot");
78
79 unsigned int numberOfIndividualNCuts = pt.get<unsigned int>("FastBDT_number_individual_nCuts", 0);
80 m_individual_nCuts.resize(numberOfIndividualNCuts);
81 for (unsigned int i = 0; i < numberOfIndividualNCuts; ++i) {
82 m_individual_nCuts[i] = pt.get<unsigned int>(std::string("FastBDT_individual_nCuts") + std::to_string(i));
83 }
84
85 m_purityTransformation = pt.get<bool>("FastBDT_purityTransformation");
86 unsigned int numberOfIndividualPurityTransformation = pt.get<unsigned int>("FastBDT_number_individualPurityTransformation", 0);
87 m_individualPurityTransformation.resize(numberOfIndividualPurityTransformation);
88 for (unsigned int i = 0; i < numberOfIndividualPurityTransformation; ++i) {
89 m_individualPurityTransformation[i] = pt.get<bool>(std::string("FastBDT_individualPurityTransformation") + std::to_string(i));
90 }
91
92 } else {
93 m_flatnessLoss = -1.0;
94 m_sPlot = false;
95 }
96#endif
97 }

◆ save()

void save ( boost::property_tree::ptree &  pt) const
overridevirtual

Save mechanism to store Options in a xml tree.

Parameters
ptxml tree

Implements Options.

Definition at line 99 of file FastBDT.cc.

100 {
101#if FastBDT_VERSION_MAJOR >= 5
102 pt.put("FastBDT_version", 2);
103#else
104 pt.put("FastBDT_version", 1);
105#endif
106 pt.put("FastBDT_nTrees", m_nTrees);
107 pt.put("FastBDT_nCuts", m_nCuts);
108 pt.put("FastBDT_nLevels", m_nLevels);
109 pt.put("FastBDT_shrinkage", m_shrinkage);
110 pt.put("FastBDT_randRatio", m_randRatio);
111#if FastBDT_VERSION_MAJOR >= 5
112 pt.put("FastBDT_flatnessLoss", m_flatnessLoss);
113 pt.put("FastBDT_sPlot", m_sPlot);
114 pt.put("FastBDT_number_individual_nCuts", m_individual_nCuts.size());
115 for (unsigned int i = 0; i < m_individual_nCuts.size(); ++i) {
116 pt.put(std::string("FastBDT_individual_nCuts") + std::to_string(i), m_individual_nCuts[i]);
117 }
118 pt.put("FastBDT_purityTransformation", m_purityTransformation);
119 pt.put("FastBDT_number_individualPurityTransformation", m_individualPurityTransformation.size());
120 for (unsigned int i = 0; i < m_individualPurityTransformation.size(); ++i) {
121 pt.put(std::string("FastBDT_individualPurityTransformation") + std::to_string(i), m_individualPurityTransformation[i]);
122 }
123#endif
124 }

Member Data Documentation

◆ m_nCuts

unsigned int m_nCuts = 8

Number of cut Levels = log_2(Number of Cuts)

Definition at line 79 of file FastBDT.h.

◆ m_nLevels

unsigned int m_nLevels = 3

Depth of tree.

Definition at line 80 of file FastBDT.h.

◆ m_nTrees

unsigned int m_nTrees = 200

Number of trees.

Definition at line 78 of file FastBDT.h.

◆ m_randRatio

double m_randRatio = 0.5

Fraction of data to use in the stochastic training.

Definition at line 82 of file FastBDT.h.

◆ m_shrinkage

double m_shrinkage = 0.1

Shrinkage during the boosting step.

Definition at line 81 of file FastBDT.h.


The documentation for this class was generated from the following files: