xgboost
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
xgboost::ObjFunction Class Referenceabstract

The interface of objective function. More...

#include <objective.h>

Inheritance diagram for xgboost::ObjFunction:
Inheritance graph
Collaboration diagram for xgboost::ObjFunction:
Collaboration graph

Public Member Functions

 ~ObjFunction () override=default
 
virtual void Configure (Args const &args)=0
 Configure the objective with the specified parameters. More...
 
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. More...
 
virtual const char * DefaultEvalMetric () const =0
 
virtual Json DefaultMetricConfig () const
 Return the configuration for the default metric. More...
 
virtual void PredTransform (HostDeviceVector< float > *) const
 Apply inverse link (activation) function to prediction values. More...
 
virtual void EvalTransform (HostDeviceVector< float > *io_preds)
 Apply inverse link (activation) function to prediction values. More...
 
virtual void ProbToMargin (linalg::Vector< float > *) const
 Apply the link function to the intercept. More...
 
virtual void InitEstimation (MetaInfo const &info, linalg::Vector< float > *base_score) const
 Obtain the initial estimation of prediction (intercept). More...
 
virtual struct ObjInfo Task () const =0
 Return task of this objective. More...
 
virtual bst_target_t Targets (MetaInfo const &info) const
 Return number of targets for input matrix. Right now XGBoost supports only multi-target regression. More...
 
Context const * Ctx () const
 Getter of the context. More...
 
virtual void UpdateTreeLeaf (HostDeviceVector< bst_node_t > const &, MetaInfo const &, float, HostDeviceVector< float > const &, bst_target_t, RegTree *) const
 Update the leaf values after a tree is built. Needed for objectives with 0 hessian. More...
 
- Public Member Functions inherited from xgboost::Configurable
virtual ~Configurable ()=default
 
virtual void LoadConfig (Json const &in)=0
 Load configuration from JSON object. More...
 
virtual void SaveConfig (Json *out) const =0
 Save configuration to JSON object. More...
 

Static Public Member Functions

static constexpr float DefaultBaseScore ()
 
static ObjFunctionCreate (const std::string &name, Context const *ctx)
 Create an objective function according to the name. More...
 

Protected Attributes

Context const * ctx_ {nullptr}
 

Detailed Description

The interface of objective function.

Constructor & Destructor Documentation

◆ ~ObjFunction()

xgboost::ObjFunction::~ObjFunction ( )
overridedefault

Member Function Documentation

◆ Configure()

virtual void xgboost::ObjFunction::Configure ( Args const &  args)
pure virtual

Configure the objective with the specified parameters.

Parameters
argsarguments to the objective function.

◆ Create()

static ObjFunction* xgboost::ObjFunction::Create ( const std::string &  name,
Context const *  ctx 
)
static

Create an objective function according to the name.

Parameters
nameName of the objective.
ctxPointer to the context.

◆ Ctx()

Context const* xgboost::ObjFunction::Ctx ( ) const
inline

Getter of the context.

◆ DefaultBaseScore()

static constexpr float xgboost::ObjFunction::DefaultBaseScore ( )
inlinestaticconstexpr

◆ DefaultEvalMetric()

virtual const char* xgboost::ObjFunction::DefaultEvalMetric ( ) const
pure virtual
Returns
the default evaluation metric for the objective

◆ DefaultMetricConfig()

virtual Json xgboost::ObjFunction::DefaultMetricConfig ( ) const
inlinevirtual

Return the configuration for the default metric.

◆ EvalTransform()

virtual void xgboost::ObjFunction::EvalTransform ( HostDeviceVector< float > *  io_preds)
inlinevirtual

Apply inverse link (activation) function to prediction values.

This is only called when Eval is called, usually it redirect to PredTransform

Parameters
[in,out]io_predsprediction values, saves to this vector as well.

◆ GetGradient()

virtual void xgboost::ObjFunction::GetGradient ( HostDeviceVector< float > const &  preds,
MetaInfo const &  info,
std::int32_t  iter,
linalg::Matrix< GradientPair > *  out_gpair 
)
pure virtual

Get gradient over each of predictions, given existing information.

Parameters
predsRaw prediction (before applying the inverse link) of the current round.
infoinformation about labels, weights, groups in rank.
iterationcurrent iteration number.
out_gpairoutput of get gradient, saves gradient and second order gradient in

◆ InitEstimation()

virtual void xgboost::ObjFunction::InitEstimation ( MetaInfo const &  info,
linalg::Vector< float > *  base_score 
) const
virtual

Obtain the initial estimation of prediction (intercept).

The output in base_score represents prediction after apply the inverse link function (valid prediction instead of raw).

Parameters
infoMetaInfo that contains label.
base_scoreOutput estimation.

◆ PredTransform()

virtual void xgboost::ObjFunction::PredTransform ( HostDeviceVector< float > *  ) const
inlinevirtual

Apply inverse link (activation) function to prediction values.

This is only called when Prediction is called

Parameters
[in,out]io_predsprediction values, saves to this vector as well.

◆ ProbToMargin()

virtual void xgboost::ObjFunction::ProbToMargin ( linalg::Vector< float > *  ) const
inlinevirtual

Apply the link function to the intercept.

This is an inverse of PredTransform for most of the objectives (if there's a valid inverse). It's used to transform user-set base_score back to margin used by gradient boosting. The method converts objective-based valid outputs like probability back to raw model outputs.

Parameters
[in,out]base_scoreThe intercept to transform.

◆ Targets()

virtual bst_target_t xgboost::ObjFunction::Targets ( MetaInfo const &  info) const
inlinevirtual

Return number of targets for input matrix. Right now XGBoost supports only multi-target regression.

◆ Task()

virtual struct ObjInfo xgboost::ObjFunction::Task ( ) const
pure virtual

Return task of this objective.

◆ UpdateTreeLeaf()

virtual void xgboost::ObjFunction::UpdateTreeLeaf ( HostDeviceVector< bst_node_t > const &  ,
MetaInfo const &  ,
float  ,
HostDeviceVector< float > const &  ,
bst_target_t  ,
RegTree  
) const
inlinevirtual

Update the leaf values after a tree is built. Needed for objectives with 0 hessian.

Note that the leaf update is not well defined for distributed training as XGBoost computes only an average of quantile between workers. This breaks when some leaf have no sample assigned in a local worker.

Parameters
positionThe leaf index for each rows.
infoMetaInfo providing labels and weights.
learning_rateThe learning rate for current iteration.
predictionModel prediction after transformation.
group_idxThe group index for this tree, 0 when it's not multi-target or multi-class.
p_treeTree that needs to be updated.

Member Data Documentation

◆ ctx_

Context const* xgboost::ObjFunction::ctx_ {nullptr}
protected

The documentation for this class was generated from the following file: