MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / SplitInfo

Class SplitInfo

src/treelearner/split_info.hpp:22–193  ·  view source on GitHub ↗

! * \brief Used to store some information for gain split point */

Source from the content-addressed store, hash-verified

20* \brief Used to store some information for gain split point
21*/
22struct SplitInfo {
23 public:
24 /*! \brief Feature index */
25 int feature = -1;
26 /*! \brief Split threshold */
27 uint32_t threshold = 0;
28 /*! \brief Left number of data after split */
29 data_size_t left_count = 0;
30 /*! \brief Right number of data after split */
31 data_size_t right_count = 0;
32 int num_cat_threshold = 0;
33 /*! \brief Left output after split */
34 double left_output = 0.0;
35 /*! \brief Right output after split */
36 double right_output = 0.0;
37 /*! \brief Split gain */
38 double gain = kMinScore;
39 /*! \brief Left sum gradient after split */
40 double left_sum_gradient = 0;
41 /*! \brief Left sum hessian after split */
42 double left_sum_hessian = 0;
43 /*! \brief Right sum gradient after split */
44 double right_sum_gradient = 0;
45 /*! \brief Right sum hessian after split */
46 double right_sum_hessian = 0;
47 std::vector<uint32_t> cat_threshold;
48 /*! \brief True if default split is left */
49 bool default_left = true;
50 int8_t monotone_type = 0;
51 double min_constraint = -std::numeric_limits<double>::max();
52 double max_constraint = std::numeric_limits<double>::max();
53 inline static int Size(int max_cat_threshold) {
54 return 2 * sizeof(int) + sizeof(uint32_t) + sizeof(bool) + sizeof(double) * 9 + sizeof(data_size_t) * 2 + max_cat_threshold * sizeof(uint32_t) + sizeof(int8_t);
55 }
56
57 inline void CopyTo(char* buffer) const {
58 std::memcpy(buffer, &feature, sizeof(feature));
59 buffer += sizeof(feature);
60 std::memcpy(buffer, &left_count, sizeof(left_count));
61 buffer += sizeof(left_count);
62 std::memcpy(buffer, &right_count, sizeof(right_count));
63 buffer += sizeof(right_count);
64 std::memcpy(buffer, &gain, sizeof(gain));
65 buffer += sizeof(gain);
66 std::memcpy(buffer, &threshold, sizeof(threshold));
67 buffer += sizeof(threshold);
68 std::memcpy(buffer, &left_output, sizeof(left_output));
69 buffer += sizeof(left_output);
70 std::memcpy(buffer, &right_output, sizeof(right_output));
71 buffer += sizeof(right_output);
72 std::memcpy(buffer, &left_sum_gradient, sizeof(left_sum_gradient));
73 buffer += sizeof(left_sum_gradient);
74 std::memcpy(buffer, &left_sum_hessian, sizeof(left_sum_hessian));
75 buffer += sizeof(left_sum_hessian);
76 std::memcpy(buffer, &right_sum_gradient, sizeof(right_sum_gradient));
77 buffer += sizeof(right_sum_gradient);
78 std::memcpy(buffer, &right_sum_hessian, sizeof(right_sum_hessian));
79 buffer += sizeof(right_sum_hessian);

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected