Venkatachalam
Venkatachalam

Reputation: 16966

What are different options for objective functions available in xgboost.XGBClassifier?

Apart from binary:logistic (which is the default objective function), is there any other built-in objective function that can be used in xbgoost.XGBClassifier ?

Upvotes: 34

Views: 61632

Answers (3)

Arpan Ghosh
Arpan Ghosh

Reputation: 51

These are the bulit-in functions available

  • Objective candidate: survival:aft
  • Objective candidate: binary:hinge
  • Objective candidate: multi:softmax
  • Objective candidate: multi:softprob
  • Objective candidate: rank:pairwise
  • Objective candidate: rank:ndcg
  • Objective candidate: rank:map
  • Objective candidate: reg:squarederror
  • Objective candidate: reg:squaredlogerror
  • Objective candidate: reg:logistic
  • Objective candidate: binary:logistic
  • Objective candidate: binary:logitraw
  • Objective candidate: reg:linear
  • Objective candidate: reg:pseudohubererror
  • Objective candidate: count:poisson
  • Objective candidate: survival:cox
  • Objective candidate: reg:gamma
  • Objective candidate: reg:tweedie
  • Objective candidate: reg:absoluteerror

Upvotes: 5

S Bhupendra Adhikari
S Bhupendra Adhikari

Reputation: 61

The default objective for XGBClassifier is ['reg:linear] however there are other parameters as well.. binary:logistic-It returns predicted probabilities for predicted class multi:softmax - Returns hard class for multiclass classification multi:softprob - It Returns probabilities for multiclass classification

Note: when using multi:softmax as objective, you need to pass num_class also as num_class is number of parameters defining number of class such as for labelliing (0,1,2), here we have 3 classes, so num_class = 3

Upvotes: 6

kawa
kawa

Reputation: 304

That's true that binary:logistic is the default objective for XGBClassifier, but I don't see any reason why you couldn't use other objectives offered by XGBoost package. For example, you can see in sklearn.py source code that multi:softprob is used explicitly in multiclass case.

Moreover, if it's really necessary, you can provide a custom objective function (details here).

Upvotes: 28

Related Questions