RTBMinDist.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * @file RTBMinDist.h
  3. * @brief random regression tree; split criterion is to minimize mean distance of all examples of an inner node
  4. * @author Frank Prüfer
  5. * @date 09/17/2013
  6. */
  7. #ifndef RTBMINDISTINCLUDE
  8. #define RTBMINDISTINCLUDE
  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. /** random regression tree */
  16. class RTBMinDist : 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_distance_reduction;
  24. RegressionNode *buildRecursive ( const NICE::VVector & x,
  25. const NICE::Vector & y,
  26. std::vector<int> & selection,
  27. int depth);
  28. void computeDistanceToPrototype ( const std::vector<double> &fvalues,
  29. const int &countEx,
  30. double &dist);
  31. bool averageDistanceLeftRight ( const std::vector< std::pair< double, int > > values,
  32. double threshold,
  33. double & avg_dist_left,
  34. double & avg_dist_right,
  35. int & count_left,
  36. int & count_right );
  37. public:
  38. /** simple constructor */
  39. RTBMinDist( const NICE::Config *conf, std::string section = "RTBMinDist" );
  40. /** simple destructor */
  41. virtual ~RTBMinDist();
  42. RegressionNode *build ( const NICE::VVector & x,
  43. const NICE::Vector & y );
  44. };
  45. } // namespace
  46. #endif