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 <xgboost/base.h>
13 #include <xgboost/data.h>
14 #include <xgboost/gradient.h> // for GradientContainer
16 #include <xgboost/model.h>
17 
18 #include <functional>
19 #include <memory>
20 #include <string>
21 #include <vector>
22 
23 namespace xgboost {
24 
25 class Json;
26 class FeatureMap;
27 class ObjFunction;
28 class CatContainer;
29 
30 struct Context;
31 struct LearnerModelParam;
32 struct PredictionCacheEntry;
33 
37 class GradientBooster : public Model, public Configurable {
38  protected:
39  Context const* ctx_;
40  explicit GradientBooster(Context const* ctx) : ctx_{ctx} {}
41 
42  public:
44  ~GradientBooster() override = default;
51  virtual void Configure(Args const& cfg) = 0;
52 
60  virtual void Slice(bst_layer_t /*begin*/, bst_layer_t /*end*/, bst_layer_t /*step*/,
61  GradientBooster* /*out*/, bool* /*out_of_bound*/) const {
62  LOG(FATAL) << "Slice is not supported by the current booster.";
63  }
67  [[nodiscard]] virtual std::int32_t BoostedRounds() const = 0;
72  [[nodiscard]] virtual bool ModelFitted() const = 0;
82  virtual void DoBoost(DMatrix* p_fmat, GradientContainer* in_gpair,
83  PredictionCacheEntry* prediction, ObjFunction const* obj) = 0;
84 
95  virtual void PredictBatch(DMatrix* dmat, PredictionCacheEntry* out_preds, bool training,
96  bst_layer_t begin, bst_layer_t end) = 0;
97 
107  virtual void InplacePredict(std::shared_ptr<DMatrix>, float, PredictionCacheEntry*, bst_layer_t,
108  bst_layer_t) const {
109  LOG(FATAL) << "Inplace predict is not supported by the current booster.";
110  }
119  virtual void PredictLeaf(DMatrix *dmat,
120  HostDeviceVector<bst_float> *out_preds,
121  unsigned layer_begin, unsigned layer_end) = 0;
122 
132  virtual void PredictContribution(DMatrix* dmat, HostDeviceVector<float>* out_contribs,
133  bst_layer_t layer_begin, bst_layer_t layer_end,
134  bool approximate = false) = 0;
135 
137  bst_layer_t layer_begin, bst_layer_t layer_end,
138  bool approximate) = 0;
139 
147  [[nodiscard]] virtual std::vector<std::string> DumpModel(const FeatureMap& fmap, bool with_stats,
148  std::string format) const = 0;
149 
150  virtual void FeatureScore(std::string const& importance_type,
152  std::vector<bst_feature_t>* features,
153  std::vector<float>* scores) const = 0;
157  [[nodiscard]] virtual CatContainer const* Cats() const {
158  LOG(FATAL) << "Retrieving categories is not supported by the current booster.";
159  return nullptr;
160  }
168  static GradientBooster* Create(const std::string& name, Context const* ctx,
169  LearnerModelParam const* learner_model_param);
170 };
171 
176  : public dmlc::FunctionRegEntryBase<
177  GradientBoosterReg,
178  std::function<GradientBooster*(LearnerModelParam const* learner_model_param,
179  Context const* ctx)> > {};
180 
193 #define XGBOOST_REGISTER_GBM(UniqueId, Name) \
194  static DMLC_ATTRIBUTE_UNUSED ::xgboost::GradientBoosterReg & \
195  __make_ ## GradientBoosterReg ## _ ## UniqueId ## __ = \
196  ::dmlc::Registry< ::xgboost::GradientBoosterReg>::Get()->__REGISTER__(Name)
197 
198 } // namespace xgboost
199 #endif // XGBOOST_GBM_H_
Defines configuration macros and basic types for xgboost.
Internal data structured used by XGBoost to hold all external data.
Definition: data.h:577
Feature map data structure to help text model dump. TODO(tqchen) consider make it even more lightweig...
Definition: feature_map.h:22
interface of gradient boosting model.
Definition: gbm.h:37
~GradientBooster() override=default
virtual destructor
GradientBooster(Context const *ctx)
Definition: gbm.h:40
virtual std::int32_t BoostedRounds() const =0
Return number of boosted rounds.
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 ...
virtual std::vector< std::string > DumpModel(const FeatureMap &fmap, bool with_stats, std::string format) const =0
dump the model in the requested format
virtual void PredictInteractionContributions(DMatrix *dmat, HostDeviceVector< float > *out_contribs, bst_layer_t layer_begin, bst_layer_t layer_end, bool approximate)=0
virtual void Configure(Args const &cfg)=0
Set the configuration of gradient boosting. User must call configure once before InitModel and Traini...
virtual void InplacePredict(std::shared_ptr< DMatrix >, float, PredictionCacheEntry *, bst_layer_t, bst_layer_t) const
Inplace prediction.
Definition: gbm.h:107
static GradientBooster * Create(const std::string &name, Context const *ctx, LearnerModelParam const *learner_model_param)
create a gradient booster from given name
virtual void FeatureScore(std::string const &importance_type, common::Span< int32_t const > trees, std::vector< bst_feature_t > *features, std::vector< float > *scores) const =0
virtual bool ModelFitted() const =0
Whether the model has already been trained. When tree booster is chosen, then returns true when there...
virtual void PredictContribution(DMatrix *dmat, HostDeviceVector< float > *out_contribs, bst_layer_t layer_begin, bst_layer_t layer_end, bool approximate=false)=0
feature contributions to individual predictions; the output will be a vector of length (nfeats + 1) *...
Context const * ctx_
Definition: gbm.h:39
virtual void DoBoost(DMatrix *p_fmat, GradientContainer *in_gpair, PredictionCacheEntry *prediction, ObjFunction const *obj)=0
perform update to the model(boosting)
virtual CatContainer const * Cats() const
Getter for categories.
Definition: gbm.h:157
virtual void PredictBatch(DMatrix *dmat, PredictionCacheEntry *out_preds, bool training, bst_layer_t begin, bst_layer_t end)=0
Generate predictions for given feature matrix.
virtual void Slice(bst_layer_t, bst_layer_t, bst_layer_t, GradientBooster *, bool *) const
Slice a model using boosting index. The slice m:n indicates taking all trees that were fit during the...
Definition: gbm.h:60
The interface of objective function.
Definition: objective.h:28
span class implementation, based on ISO++20 span<T>. The interface should be the same.
Definition: span.h:435
The input data structure of xgboost.
A device-and-host vector abstraction layer.
Defines the abstract interface for different components in XGBoost.
Learner interface that integrates objective, gbm and evaluation together. This is the user facing XGB...
Definition: base.h:89
std::vector< std::pair< std::string, std::string > > Args
Definition: base.h:306
std::int32_t bst_layer_t
Type for indexing boosted layers.
Definition: base.h:123
Definition: model.h:28
Runtime context for XGBoost. Contains information like threads and device.
Definition: context.h:142
Registry entry for tree updater.
Definition: gbm.h:179
Container for gradient produced by objective.
Definition: gradient.h:16
Basic model parameters, used to describe the booster.
Definition: learner.h:297
Definition: model.h:14
Contains pointer to input matrix and associated cached predictions.
Definition: predictor.h:30