mlpack 3.4.2
hoeffding_categorical_split.hpp
Go to the documentation of this file.
1
13#ifndef MLPACK_METHODS_HOEFFDING_TREES_HOEFFDING_CATEGORICAL_SPLIT_HPP
14#define MLPACK_METHODS_HOEFFDING_TREES_HOEFFDING_CATEGORICAL_SPLIT_HPP
15
16#include <mlpack/prereqs.hpp>
18
19namespace mlpack {
20namespace tree {
21
43template<typename FitnessFunction>
45{
46 public:
49
57 HoeffdingCategoricalSplit(const size_t numCategories = 0,
58 const size_t numClasses = 0);
59
66 HoeffdingCategoricalSplit(const size_t numCategories,
67 const size_t numClasses,
68 const HoeffdingCategoricalSplit& other);
69
76 template<typename eT>
77 void Train(eT value, const size_t label);
78
89 void EvaluateFitnessFunction(double& bestFitness, double& secondBestFitness)
90 const;
91
93 size_t NumChildren() const { return sufficientStatistics.n_cols; }
94
102 void Split(arma::Col<size_t>& childMajorities, SplitInfo& splitInfo);
103
105 size_t MajorityClass() const;
107 double MajorityProbability() const;
108
110 template<typename Archive>
111 void serialize(Archive& ar, const unsigned int /* version */)
112 {
113 ar & BOOST_SERIALIZATION_NVP(sufficientStatistics);
114 }
115
116 private:
120 arma::Mat<size_t> sufficientStatistics;
121};
122
123} // namespace tree
124} // namespace mlpack
125
126// Include implementation.
127#include "hoeffding_categorical_split_impl.hpp"
128
129#endif
This is the standard Hoeffding-bound categorical feature proposed in the paper below:
void Train(eT value, const size_t label)
Train on the given value with the given label.
void Split(arma::Col< size_t > &childMajorities, SplitInfo &splitInfo)
Gather the information for a split: get the labels of the child majorities, and initialize the SplitI...
size_t NumChildren() const
Return the number of children, if the node were to split.
size_t MajorityClass() const
Get the majority class seen so far.
double MajorityProbability() const
Get the probability of the majority class given the points seen so far.
HoeffdingCategoricalSplit(const size_t numCategories, const size_t numClasses, const HoeffdingCategoricalSplit &other)
Create the HoeffdingCategoricalSplit given a number of categories for this dimension and a number of ...
void EvaluateFitnessFunction(double &bestFitness, double &secondBestFitness) const
Given the points seen so far, evaluate the fitness function, returning the gain for the best possible...
HoeffdingCategoricalSplit(const size_t numCategories=0, const size_t numClasses=0)
Create the HoeffdingCategoricalSplit given a number of categories for this dimension and a number of ...
CategoricalSplitInfo SplitInfo
The type of split information required by the HoeffdingCategoricalSplit.
void serialize(Archive &ar, const unsigned int)
Serialize the categorical split.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.