8 #ifndef XGBOOST_LEARNER_H_
9 #define XGBOOST_LEARNER_H_
31 class GradientBooster;
35 struct XGBAPIThreadLocalEntry;
37 class HostDeviceVector;
79 virtual void UpdateOneIter(std::int32_t iter, std::shared_ptr<DMatrix> train) = 0;
89 virtual void BoostOneIter(std::int32_t iter, std::shared_ptr<DMatrix> train,
99 const std::vector<std::shared_ptr<DMatrix>>& data_sets,
100 const std::vector<std::string>& data_names) = 0;
114 virtual void Predict(std::shared_ptr<DMatrix> data,
bool output_margin,
116 bst_layer_t layer_end,
bool training =
false,
bool pred_leaf =
false,
117 bool pred_contribs =
false,
bool approx_contribs =
false,
118 bool pred_interactions =
false) = 0;
139 std::vector<bst_feature_t>* features,
140 std::vector<float>* scores) = 0;
149 virtual std::uint32_t
Groups()
const = 0;
171 virtual void SetParam(
const std::string& key,
const std::string& value) = 0;
187 virtual void SetAttr(
const std::string& key,
const std::string& value) = 0;
195 virtual bool GetAttr(
const std::string& key, std::string* out)
const = 0;
201 virtual bool DelAttr(
const std::string& key) = 0;
239 bool* out_of_bound) = 0;
249 std::string format) = 0;
261 static Learner*
Create(
const std::vector<std::shared_ptr<DMatrix> >& cache_data);
274 std::unique_ptr<ObjFunction>
obj_;
276 std::unique_ptr<GradientBooster>
gbm_;
283 struct LearnerModelParamLegacy;
331 : base_score_{
std::move(base_score)},
特征映射数据结构,用于帮助文本模型转储。TODO(tqchen) 考虑使其更加轻量...
定义于: feature_map.h:22
表示 JSON 格式的数据结构。
定义于: json.h:378
执行训练和预测的 Learner 类。这是 xgboost 训练的用户界面模块...
定义于: learner.h:65
virtual std::vector< std::string > GetAttrNames() const =0
从 booster 获取属性名称向量。
virtual void UpdateOneIter(std::int32_t iter, std::shared_ptr< DMatrix > train)=0
使用指定的目标函数更新模型一次迭代。
virtual void InplacePredict(std::shared_ptr< DMatrix > p_m, PredictionType type, float missing, HostDeviceVector< float > **out_preds, bst_layer_t layer_begin, bst_layer_t layer_end)=0
原地预测。
virtual void SetParam(const std::string &key, const std::string &value)=0
为 booster 设置参数。
virtual void LoadModel(dmlc::Stream *fi)=0
std::vector< std::unique_ptr< Metric > > metrics_
用于评估模型的评估指标。
定义于: learner.h:278
virtual void CalcFeatureScore(std::string const &importance_type, common::Span< int32_t const > trees, std::vector< bst_feature_t > *features, std::vector< float > *scores)=0
计算特征分数。输出参见 C API 文档。
virtual void Reset()=0
重置 booster 对象以释放训练中使用的数据缓存。
virtual std::vector< std::string > DumpModel(const FeatureMap &fmap, bool with_stats, std::string format)=0
以请求的格式转储模型
virtual std::string EvalOneIter(int iter, const std::vector< std::shared_ptr< DMatrix >> &data_sets, const std::vector< std::string > &data_names)=0
使用配置的指标评估特定迭代的模型。
virtual XGBAPIThreadLocalEntry & GetThreadLocal() const =0
virtual const std::map< std::string, std::string > & GetConfigurationArguments() const =0
获取当前由 Learner 存储的配置参数。
virtual void SetFeatureNames(std::vector< std::string > const &fn)=0
为当前 booster 设置特征名称。
virtual void SaveModel(dmlc::Stream *fo) const =0
virtual Context const * Ctx() const =0
返回此 Booster 的 context 对象。
virtual void Configure()=0
根据设置的参数配置 Learner。
virtual int32_t BoostedRounds() const =0
virtual bool DelAttr(const std::string &key)=0
从 booster 删除属性。
virtual bool GetAttr(const std::string &key, std::string *out) const =0
从 booster 获取属性。该属性将随同 booster 一起保存。
virtual void SetParams(Args const &args)=0
一次设置多个参数。
virtual void SetAttr(const std::string &key, const std::string &value)=0
为 Booster 设置附加属性。
std::unique_ptr< ObjFunction > obj_
目标函数
定义于: learner.h:274
std::unique_ptr< GradientBooster > gbm_
模型使用的梯度提升器。
定义于: learner.h:276
virtual void GetFeatureNames(std::vector< std::string > *fn) const =0
获取当前 booster 的特征名称。
void LoadModel(Json const &in) override=0
从 JSON 对象加载模型
virtual void SetFeatureTypes(std::vector< std::string > const &ft)=0
为当前 booster 设置特征类型。
void SaveModel(Json *out) const override=0
将模型配置保存到 JSON 对象
static Learner * Create(const std::vector< std::shared_ptr< DMatrix > > &cache_data)
创建 Learner 的新实例。
virtual Learner * Slice(bst_layer_t begin, bst_layer_t end, bst_layer_t step, bool *out_of_bound)=0
切片模型。
Context ctx_
训练参数。
定义于: learner.h:280
virtual std::uint32_t Groups() const =0
获取模型输出组的数量。
virtual void BoostOneIter(std::int32_t iter, std::shared_ptr< DMatrix > train, linalg::Matrix< GradientPair > *in_gpair)=0
使用 in_gpair 执行自定义梯度提升。
virtual void Predict(std::shared_ptr< DMatrix > data, bool output_margin, HostDeviceVector< bst_float > *out_preds, bst_layer_t layer_begin, bst_layer_t layer_end, bool training=false, bool pred_leaf=false, bool pred_contribs=false, bool approx_contribs=false, bool pred_interactions=false)=0
给定模型进行预测。
virtual uint32_t GetNumFeature() const =0
获取 booster 的特征数量。
virtual void GetFeatureTypes(std::vector< std::string > *ft) const =0
获取当前 booster 的特征类型。
span 类实现,基于 ISO++20 span<T>。接口应相同。
定义于: span.h:431
具有静态类型和维度的 tensor 视图。它实现了索引和切片。
定义于: linalg.h:294
tensor 存储。要将其用于切片等其他功能,首先需要获取一个视图...
定义于: linalg.h:762
多目标树的核心数据结构。
定义于: base.h:89
std::vector< std::pair< std::string, std::string > > Args
定义于: base.h:316
PredictionType
定义于: learner.h:39
std::uint32_t bst_target_t
用于索引输出目标的类型。
定义于: base.h:119
std::int32_t bst_layer_t
用于索引提升层(boosted layers)的类型。
定义于: base.h:123
std::uint32_t bst_feature_t
用于数据列(特征)索引的类型。
定义于: base.h:99
MultiStrategy
构建多目标模型的策略。
定义于: learner.h:288
XGBoost 的运行时上下文。包含线程和设备等信息。
定义于: context.h:133
设备序号的类型。该类型被打包成 32 位,以便在线性类型视图中高效使用...
定义于: context.h:34
基本模型参数,用于描述 booster。
定义于: learner.h:296
std::uint32_t num_output_group
类或目标的数量。
定义于: learner.h:312
LearnerModelParam()=default
LearnerModelParam(Context const *ctx, LearnerModelParamLegacy const &user_param, linalg::Tensor< float, 1 > base_margin, ObjInfo t, MultiStrategy multi_strategy)
bool Initialized() const
定义于: learner.h:349
LearnerModelParam(bst_feature_t n_features, linalg::Tensor< float, 1 > base_score, std::uint32_t n_groups, bst_target_t n_targets, MultiStrategy multi_strategy)
定义于: learner.h:329
MultiStrategy multi_strategy
构建多目标模型的策略。
定义于: learner.h:320
linalg::TensorView< float const, 1 > BaseScore(DeviceOrd device) const
bst_target_t OutputLength() const noexcept
定义于: learner.h:343
LearnerModelParam(LearnerModelParamLegacy const &user_param, ObjInfo t, MultiStrategy multi_strategy)
void Copy(LearnerModelParam const &that)
linalg::TensorView< float const, 1 > BaseScore(Context const *ctx) const
bst_target_t LeafLength() const noexcept
定义于: learner.h:344
ObjInfo task
当前任务,由 objective 确定。
定义于: learner.h:316
bool IsVectorLeaf() const noexcept
定义于: learner.h:340
bst_feature_t num_feature
特征数量。
定义于: learner.h:308
一个由 objective 返回的结构体,用于确定当前任务。该结构体不被任何算法使用...
定义于: task.h:24
@ kRegression
定义于: task.h:27