123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- #ifndef DTBOBLIQUEINCLUDE
- #define DTBOBLIQUEINCLUDE
- #include "core/vector/VectorT.h"
- #include "core/vector/MatrixT.h"
- #include "core/basics/Config.h"
- #include "DecisionTreeBuilder.h"
- #include "vislearning/cbaselib/CachedExample.h"
- namespace OBJREC {
- struct SplitInfo {
- double threshold;
- double informationGain;
- double entropyLeft;
- double entropyRight;
- double *distLeft;
- double *distRight;
- NICE::Vector params;
- };
- class DTBOblique : public DecisionTreeBuilder
- {
- protected:
-
-
-
-
-
-
- bool useShannonEntropy;
-
- bool saveIndices;
-
- bool useOneVsOne;
-
- int splitSteps;
-
- int maxDepth;
-
- int minExamples;
-
- int regularizationType;
-
- double minimumEntropy;
-
- double minimumInformationGain;
-
- double lambdaInit;
-
-
-
-
-
-
- void getDataAndLabel(
- const FeaturePool &fp,
- const Examples &examples,
- const std::vector<int> & examples_selection,
- NICE::Matrix &matX,
- NICE::Vector &vecY );
-
- void regularizeDataMatrix (
- const NICE::Matrix & X,
- NICE::Matrix &XTXreg,
- const int regOption,
- const double lambda );
-
- void findBestSplitThreshold (
- FeatureValuesUnsorted & values,
- SplitInfo & bestSplitInfo,
- const NICE::Vector & beta,
- const double & e,
- const int & maxClassNo );
-
- DecisionNode *buildRecursive (
- const FeaturePool & fp,
- const Examples & examples,
- std::vector<int> & examples_selection,
- FullVector & distribution,
- double entropy,
- int maxClassNo,
- int depth,
- double curLambda );
-
- bool entropyLeftRight ( const FeatureValuesUnsorted & values,
- double threshold,
- double* stat_left,
- double* stat_right,
- double & entropy_left,
- double & entropy_right,
- double & count_left,
- double & count_right,
- int maxClassNo );
- public:
-
- DTBOblique ( const NICE::Config *conf,
- std::string section = "DTBOblique" );
-
- virtual ~DTBOblique();
-
- DecisionNode *build ( const FeaturePool &fp,
- const Examples &examples,
- int maxClassNo );
- };
- }
- #endif
|