RTBMeanPostImprovement.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /**
  2. * @file RTBMeanPostImprovement.h
  3. * @brief regression tree splitting criteria by Taylor and Jones, 1996
  4. * @author Sven Sickert
  5. * @date 07/23/2013
  6. */
  7. #ifndef RTBMEANPOSTIMPROVEMENTINCLUDE
  8. #define RTBMEANPOSTIMPROVEMENTINCLUDE
  9. #include <vector>
  10. #include "core/vector/VectorT.h"
  11. #include "core/vector/VVector.h"
  12. #include "core/basics/Config.h"
  13. #include "RegressionTreeBuilder.h"
  14. namespace OBJREC {
  15. /** regression tree splitting criteria by Taylor and Jones, 1996 */
  16. class RTBMeanPostImprovement : public RegressionTreeBuilder
  17. {
  18. protected:
  19. int random_split_tests;
  20. int random_features;
  21. int max_depth;
  22. int min_examples;
  23. double minimum_improvement;
  24. bool auto_bandwith;
  25. /** save indices in leaves */
  26. bool save_indices;
  27. RegressionNode *buildRecursive ( const NICE::VVector & x,
  28. const NICE::Vector & y,
  29. std::vector<int> & selection,
  30. int depth);
  31. double gaussianVal( const double input,
  32. const double bandwidth );
  33. bool improvementLeftRight ( const std::vector< std::pair< double, int > > values,
  34. const NICE::Vector & y,
  35. double threshold,
  36. std::vector<double> & empDist_left,
  37. std::vector<double> & empDist_right,
  38. int & count_left,
  39. int & count_right,
  40. double& h,
  41. double& p );
  42. public:
  43. /** simple constructor */
  44. RTBMeanPostImprovement( const NICE::Config *conf, std::string section = "RTBMeanPostImprovement" );
  45. /** simple destructor */
  46. virtual ~RTBMeanPostImprovement();
  47. RegressionNode *build ( const NICE::VVector & x,
  48. const NICE::Vector & y );
  49. };
  50. } // namespace
  51. #endif