XGBoost-自定义损失功能

时间:2019-10-03 19:33:57

标签: xgboost

在xgboost中使用自定义损失函数有两种不同的准则。

如果预测概率“ p” = Sigmoid(z)

  1. https://github.com/dmlc/xgboost/blob/master/demo/guide-python/custom_objective.py 1中,第25行提到自定义损失函数的梯度应为w'r't。

2。在https://xgboost.readthedocs.io/en/latest/tutorials/custom_metric_obj.html 1中,梯度为w.r.t'p'

哪个是正确的?

1 个答案:

答案 0 :(得分:1)

为使此情况尽可能通用,您需要计算总损耗函数的斜率,以改变当前的预测值。通常,损失函数的形式为$ L = \ sum_ {i = 1} ^ {N} \ ell(y_ {i},\ hat {y_ {i}})$,其中$ y_ {i} $是$ i ^ {th} $数据点的标签,$ \ hat {y_ {i}} $是您的预测(在二进制分类的情况下,您可以选择定义它,使$ y_ {i} $为二进制标签和$ \ hat {y_ {i}} $是分类器分配给作为类别之一的标签的概率)。

然后,您需要计算$ \ frac {\ partial \ ell} {\ hat {y_ {i}}} \ big | {y {i}}} $