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

Method BaggingHelper

src/boosting/gbdt.cpp:167–186  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

165}
166
167data_size_t GBDT::BaggingHelper(Random* cur_rand, data_size_t start, data_size_t cnt, data_size_t* buffer) {
168 if (cnt <= 0) {
169 return 0;
170 }
171 data_size_t bag_data_cnt = static_cast<data_size_t>(config_->bagging_fraction * cnt);
172 data_size_t cur_left_cnt = 0;
173 data_size_t cur_right_cnt = 0;
174 auto right_buffer = buffer + bag_data_cnt;
175 // random bagging, minimal unit is one record
176 for (data_size_t i = 0; i < cnt; ++i) {
177 float prob = (bag_data_cnt - cur_left_cnt) / static_cast<float>(cnt - i);
178 if (cur_rand->NextFloat() < prob) {
179 buffer[cur_left_cnt++] = start + i;
180 } else {
181 right_buffer[cur_right_cnt++] = start + i;
182 }
183 }
184 CHECK(cur_left_cnt == bag_data_cnt);
185 return cur_left_cnt;
186}
187
188data_size_t GBDT::BalancedBaggingHelper(Random* cur_rand, data_size_t start, data_size_t cnt, data_size_t* buffer) {
189 if (cnt <= 0) {

Callers

nothing calls this directly

Calls 1

NextFloatMethod · 0.45

Tested by

no test coverage detected