7 #ifndef XGBOOST_OBJECTIVE_H_
8 #define XGBOOST_OBJECTIVE_H_
10 #include <dmlc/registry.h>
85 [[nodiscard]]
virtual float ProbToMargin(
float base_score)
const {
return base_score; }
98 [[nodiscard]]
virtual struct ObjInfo Task() const = 0;
105 LOG(FATAL) <<
"multioutput is not supported by the current objective function";
128 std::int32_t ,
RegTree* )
const {}
142 :
public dmlc::FunctionRegEntryBase<ObjFunctionReg,
143 std::function<ObjFunction* ()> > {
158 #define XGBOOST_REGISTER_OBJECTIVE(UniqueId, Name) \
159 static DMLC_ATTRIBUTE_UNUSED ::xgboost::ObjFunctionReg & \
160 __make_ ## ObjFunctionReg ## _ ## UniqueId ## __ = \
161 ::dmlc::Registry< ::xgboost::ObjFunctionReg>::Get()->__REGISTER__(Name)
Defines configuration macros and basic types for xgboost.
Data structure representing JSON format.
Definition: json.h:378
interface of objective function
Definition: objective.h:27
virtual void EvalTransform(HostDeviceVector< float > *io_preds)
Apply inverse link (activation) function to prediction values.
Definition: objective.h:76
static constexpr float DefaultBaseScore()
Definition: objective.h:32
virtual void GetGradient(HostDeviceVector< float > const &preds, MetaInfo const &info, std::int32_t iter, linalg::Matrix< GradientPair > *out_gpair)=0
Get gradient over each of predictions, given existing information.
virtual void Configure(Args const &args)=0
Configure the objective with the specified parameters.
Context const * ctx_
Definition: objective.h:29
virtual void PredTransform(HostDeviceVector< float > *) const
Apply inverse link (activation) function to prediction values.
Definition: objective.h:68
static ObjFunction * Create(const std::string &name, Context const *ctx)
Create an objective function according to name.
virtual void InitEstimation(MetaInfo const &info, linalg::Tensor< float, 1 > *base_score) const
Obtain the initial estimation of prediction.
virtual Json DefaultMetricConfig() const
Return the configuration for the default metric.
Definition: objective.h:58
virtual struct ObjInfo Task() const =0
Return task of this objective.
~ObjFunction() override=default
virtual destructor
virtual void UpdateTreeLeaf(HostDeviceVector< bst_node_t > const &, MetaInfo const &, float, HostDeviceVector< float > const &, std::int32_t, RegTree *) const
Update the leaf values after a tree is built. Needed for objectives with 0 hessian.
Definition: objective.h:125
virtual const char * DefaultEvalMetric() const =0
virtual bst_target_t Targets(MetaInfo const &info) const
Return number of targets for input matrix. Right now XGBoost supports only multi-target regression.
Definition: objective.h:103
virtual float ProbToMargin(float base_score) const
Apply link function to the intercept.
Definition: objective.h:85
define regression tree to be the most common tree model.
Definition: tree_model.h:157
A tensor storage. To use it for other functionality like slicing one needs to obtain a view first....
Definition: linalg.h:762
auto Shape() const
Definition: linalg.h:884
The input data structure of xgboost.
A device-and-host vector abstraction layer.
Defines the abstract interface for different components in XGBoost.
Core data structure for multi-target trees.
Definition: base.h:89
std::vector< std::pair< std::string, std::string > > Args
Definition: base.h:316
std::uint32_t bst_target_t
Type for indexing into output targets.
Definition: base.h:119
Runtime context for XGBoost. Contains information like threads and device.
Definition: context.h:133
Registry entry for objective factory functions.
Definition: objective.h:143
A struct returned by objective, which determines task at hand. The struct is not used by any algorith...
Definition: task.h:24