1#ifndef LIGHTGBM_BOOSTING_SCORE_UPDATER_HPP_
2#define LIGHTGBM_BOOSTING_SCORE_UPDATER_HPP_
5#include <LightGBM/utils/openmp_wrapper.h>
6#include <LightGBM/meta.h>
7#include <LightGBM/dataset.h>
8#include <LightGBM/tree.h>
9#include <LightGBM/tree_learner.h>
24 num_data_ = data->num_data();
25 int64_t total_size =
static_cast<int64_t
>(num_data_) * num_tree_per_iteration;
26 score_.resize(total_size);
28 #pragma omp parallel for schedule(static)
29 for (int64_t i = 0; i < total_size; ++i) {
32 has_init_score_ =
false;
33 const double* init_score = data->metadata().init_score();
35 if (init_score !=
nullptr) {
36 if ((data->metadata().num_init_score() % num_data_) != 0
37 || (data->metadata().num_init_score() / num_data_) != num_tree_per_iteration) {
38 Log::Fatal(
"Number of class for initial score error");
40 has_init_score_ =
true;
41 #pragma omp parallel for schedule(static)
42 for (int64_t i = 0; i < total_size; ++i) {
43 score_[i] = init_score[i];
51 inline bool has_init_score()
const {
return has_init_score_; }
53 inline void AddScore(
double val,
int cur_tree_id) {
54 const size_t offset =
static_cast<size_t>(num_data_) * cur_tree_id;
55 #pragma omp parallel for schedule(static)
56 for (
int i = 0; i < num_data_; ++i) {
57 score_[offset + i] += val;
61 inline void MultiplyScore(
double val,
int cur_tree_id) {
62 const size_t offset =
static_cast<size_t>(num_data_) * cur_tree_id;
63 #pragma omp parallel for schedule(static)
64 for (
int i = 0; i < num_data_; ++i) {
65 score_[offset + i] *= val;
75 const size_t offset =
static_cast<size_t>(num_data_) * cur_tree_id;
86 const size_t offset =
static_cast<size_t>(num_data_) * cur_tree_id;
99 const size_t offset =
static_cast<size_t>(num_data_) * cur_tree_id;
103 inline const double*
score()
const {
return score_.data(); }
105 inline data_size_t num_data()
const {
return num_data_; }
118 std::vector<double> score_;
119 bool has_init_score_;
The main class of data set, which are used to traning or validation.
Definition dataset.h:278
Used to store and update score for data.
Definition score_updater.hpp:17
void AddScore(const Tree *tree, const data_size_t *data_indices, data_size_t data_cnt, int cur_tree_id)
Using tree model to get prediction number, then adding to scores for parts of data Used for predictio...
Definition score_updater.hpp:97
ScoreUpdater & operator=(const ScoreUpdater &)=delete
Disable copy.
void AddScore(const Tree *tree, int cur_tree_id)
Using tree model to get prediction number, then adding to scores for all data Note: this function gen...
Definition score_updater.hpp:74
const double * score() const
Pointer of score.
Definition score_updater.hpp:103
ScoreUpdater(const ScoreUpdater &)=delete
Disable copy.
~ScoreUpdater()
Destructor.
Definition score_updater.hpp:48
void AddScore(const TreeLearner *tree_learner, const Tree *tree, int cur_tree_id)
Adding prediction score, only used for training data. The training data is partitioned into tree leav...
Definition score_updater.hpp:85
ScoreUpdater(const Dataset *data, int num_tree_per_iteration)
Constructor, will pass a const pointer of dataset.
Definition score_updater.hpp:23
Interface for tree learner.
Definition tree_learner.h:23
virtual void AddPredictionToScore(const Tree *tree, double *out_score) const =0
Using last trained tree to predict score then adding to out_score;.
Tree model.
Definition tree.h:20
void AddPredictionToScore(const Dataset *data, data_size_t num_data, double *score) const
Adding prediction value of this tree model to scores.
Definition tree.cpp:113
desc and descl2 fields must be written in reStructuredText format
Definition application.h:10
int32_t data_size_t
Type of data size, it is better to use signed type.
Definition meta.h:14