xgboost

gbm.h
Go to the documentation of this file.
1
8 #ifndef XGBOOST_GBM_H_
9 #define XGBOOST_GBM_H_
10
11 #include <dmlc/registry.h>
12 #include <dmlc/any.h>
13 #include <xgboost/base.h>
14 #include <xgboost/data.h>
15 #include <xgboost/host_device_vector.h>
16 #include <xgboost/model.h>
17
18 #include <vector>
19 #include <utility>
20 #include <string>
21 #include <functional>
22 #include <unordered_map>
23 #include <memory>
24
25 namespace xgboost {
26
27 class Json;
28 class FeatureMap;
29 class ObjFunction;
30
31 struct GenericParameter;
32 struct LearnerModelParam;
33 struct PredictionCacheEntry;
34 class PredictionContainer;
35
39 class GradientBooster : public Model, public Configurable {
40 protected:
41 GenericParameter const* generic_param_;
42
43 public:
45 ~GradientBooster() override = default;
52 virtual void Configure(const std::vector<std::pair<std::string, std::string> >& cfg) = 0;
57 virtual void Load(dmlc::Stream* fi) = 0;
62 virtual void Save(dmlc::Stream* fo) const = 0;
70 virtual void Slice(int32_t layer_begin, int32_t layer_end, int32_t step,
71 GradientBooster *out, bool* out_of_bound) const {
72 LOG(FATAL) << "Slice is not supported by current booster.";
73 }
79 virtual bool AllowLazyCheckPoint() const {
80 return false;
81 }
84 virtual int32_t BoostedRounds() const = 0;
92 virtual void DoBoost(DMatrix* p_fmat,
93 HostDeviceVector<GradientPair>* in_gpair,
94 PredictionCacheEntry*) = 0;
95
105 virtual void PredictBatch(DMatrix* dmat,
106 PredictionCacheEntry* out_preds,
107 bool training,
108 unsigned layer_begin,
109 unsigned layer_end) = 0;
110
120 virtual void InplacePredict(dmlc::any const &, std::shared_ptr<DMatrix>, float,
121 PredictionCacheEntry*,
122 uint32_t,
123 uint32_t) const {
124 LOG(FATAL) << "Inplace predict is not supported by current booster.";
125 }
138 virtual void PredictInstance(const SparsePage::Inst& inst,
139 std::vector<bst_float>* out_preds,
140 unsigned layer_begin, unsigned layer_end) = 0;
149 virtual void PredictLeaf(DMatrix *dmat,
150 HostDeviceVector<bst_float> *out_preds,
151 unsigned layer_begin, unsigned layer_end) = 0;
152
164 virtual void PredictContribution(DMatrix* dmat,
165 HostDeviceVector<bst_float>* out_contribs,
166 unsigned layer_begin, unsigned layer_end,
167 bool approximate = false, int condition = 0,
168 unsigned condition_feature = 0) = 0;
169
170 virtual void PredictInteractionContributions(
171 DMatrix *dmat, HostDeviceVector<bst_float> *out_contribs,
172 unsigned layer_begin, unsigned layer_end, bool approximate) = 0;
173
181 virtual std::vector<std::string> DumpModel(const FeatureMap& fmap,
182 bool with_stats,
183 std::string format) const = 0;
187 virtual bool UseGPU() const = 0;
195 static GradientBooster* Create(
196 const std::string& name,
197 GenericParameter const* generic_param,
198 LearnerModelParam const* learner_model_param);
199 };
200
204 struct GradientBoosterReg
205 : public dmlc::FunctionRegEntryBase<
206 GradientBoosterReg,
207 std::function<GradientBooster* (LearnerModelParam const* learner_model_param)> > {
208 };
209
222 #define XGBOOST_REGISTER_GBM(UniqueId, Name) \
223 static DMLC_ATTRIBUTE_UNUSED ::xgboost::GradientBoosterReg & \
224 __make_ ## GradientBoosterReg ## _ ## UniqueId ## __ = \
225 ::dmlc::Registry< ::xgboost::GradientBoosterReg>::Get()->__REGISTER__(Name)
226
227 } // namespace xgboost
228 #endif // XGBOOST_GBM_H_
xgboost::PredictionCacheEntry
Contains pointer to input matrix and associated cached predictions.
Definition: predictor.h:35
model.h
Defines the abstract interface for different components in XGBoost.
xgboost::GradientBooster::generic_param_
GenericParameter const * generic_param_
Definition: gbm.h:41
xgboost::GenericParameter
Definition: generic_parameters.h:15
xgboost::GradientBooster::PredictContribution
virtual void PredictContribution(DMatrix *dmat, HostDeviceVector< bst_float > *out_contribs, unsigned layer_begin, unsigned layer_end, bool approximate=false, int condition=0, unsigned condition_feature=0)=0
feature contributions to individual predictions; the output will be a vector of length (nfeats + 1) *...
xgboost::HostDeviceVector
Definition: host_device_vector.h:86
host_device_vector.h
A device-and-host vector abstraction layer.
xgboost::GradientBooster::~GradientBooster
~GradientBooster() override=default
virtual destructor
xgboost::GradientBooster::Load
virtual void Load(dmlc::Stream *fi)=0
load model from stream
base.h
defines configuration macros of xgboost.
xgboost::GradientBooster::Slice
virtual void Slice(int32_t layer_begin, int32_t layer_end, int32_t step, GradientBooster *out, bool *out_of_bound) const
Slice a model using boosting index. The slice m:n indicates taking all trees that were fit during the...
Definition: gbm.h:70
xgboost::GradientBooster
interface of gradient boosting model.
Definition: gbm.h:39
xgboost::DMatrix
Internal data structured used by XGBoost during training.
Definition: data.h:449
xgboost::LearnerModelParam
Definition: learner.h:296
xgboost::FeatureMap
Feature map data structure to help text model dump. TODO(tqchen) consider make it even more lightweig...
Definition: feature_map.h:22
xgboost::GradientBooster::DoBoost
virtual void DoBoost(DMatrix *p_fmat, HostDeviceVector< GradientPair > *in_gpair, PredictionCacheEntry *)=0
perform update to the model(boosting)
xgboost::Model
Definition: model.h:17
xgboost::GradientBooster::Configure
virtual void Configure(const std::vector< std::pair< std::string, std::string > > &cfg)=0
Set the configuration of gradient boosting. User must call configure once before InitModel and Traini...
xgboost::GradientBooster::PredictInstance
virtual void PredictInstance(const SparsePage::Inst &inst, std::vector< bst_float > *out_preds, unsigned layer_begin, unsigned layer_end)=0
online prediction function, predict score for one instance at a time NOTE: use the batch prediction i...
xgboost::GradientBooster::PredictInteractionContributions
virtual void PredictInteractionContributions(DMatrix *dmat, HostDeviceVector< bst_float > *out_contribs, unsigned layer_begin, unsigned layer_end, bool approximate)=0
xgboost::Configurable
Definition: model.h:31
xgboost::common::Span
span class implementation, based on ISO++20 span<T>. The interface should be the same.
Definition: span.h:142
xgboost::GradientBooster::UseGPU
virtual bool UseGPU() const =0
Whether the current booster uses GPU.
xgboost::GradientBooster::PredictBatch
virtual void PredictBatch(DMatrix *dmat, PredictionCacheEntry *out_preds, bool training, unsigned layer_begin, unsigned layer_end)=0
generate predictions for given feature matrix
xgboost::GradientBooster::InplacePredict
virtual void InplacePredict(dmlc::any const &, std::shared_ptr< DMatrix >, float, PredictionCacheEntry *, uint32_t, uint32_t) const
Inplace prediction.
Definition: gbm.h:120
data.h
The input data structure of xgboost.
xgboost::GradientBooster::DumpModel
virtual std::vector< std::string > DumpModel(const FeatureMap &fmap, bool with_stats, std::string format) const =0
dump the model in the requested format
xgboost::GradientBooster::PredictLeaf
virtual void PredictLeaf(DMatrix *dmat, HostDeviceVector< bst_float > *out_preds, unsigned layer_begin, unsigned layer_end)=0
predict the leaf index of each tree, the output will be nsample * ntree vector this is only valid in ...
xgboost::GradientBooster::BoostedRounds
virtual int32_t BoostedRounds() const =0
Return number of boosted rounds.
xgboost::GradientBoosterReg
Registry entry for tree updater.
Definition: gbm.h:204
xgboost::GradientBooster::AllowLazyCheckPoint
virtual bool AllowLazyCheckPoint() const
whether the model allow lazy checkpoint return true if model is only updated in DoBoost after all All...
Definition: gbm.h:79
xgboost::GradientBooster::Create
static GradientBooster * Create(const std::string &name, GenericParameter const *generic_param, LearnerModelParam const *learner_model_param)
create a gradient booster from given name
xgboost::GradientBooster::Save
virtual void Save(dmlc::Stream *fo) const =0
save model to stream.
xgboost
namespace of xgboost
Definition: base.h:110