XGBoost的损失函数和评估指标

时间:2018-11-29 00:38:12

标签: python machine-learning xgboost xgbclassifier

我现在对XGBoost中使用的损失函数感到困惑。这是我感到困惑的地方:

  1. 我们有objective,这是损失函数,需要最小化; eval_metric:用于表示学习结果的指标。这两个是完全不相关的(如果不考虑分类,仅loglossmlogloss可以用作eval_metric)。它是否正确?如果是我,那么对于分类问题,如何使用rmse作为性能指标?
  2. objectivereg:logistic的两个选项为例。对于0/1分类,通常应将二进制逻辑损失或交叉熵视为损失函数,对吗?那么,这两个选项中的哪个选项适用于此损失函数,另一个选项的价值是什么?假设binary:logistic代表交叉熵损失函数,那么binary:logistic会做什么?
  3. reg:logisticmulti:softmax有什么区别?它们是否使用相同的损失函数,只是输出格式不同?如果是这样,那么multi:softprobreg:logistic也应该一样,对吧?

第二个问题的补充

例如,0/1分类问题的损失函数应为 binary:logistic。因此,如果我需要在此处选择L = sum(y_i*log(P_i)+(1-y_i)*log(P_i))binary:logistic来让xgboost分类器使用reg:logistic损失函数。如果是L,那么binary:logistic使用什么损失函数?

2 个答案:

答案 0 :(得分:0)

    是,损失函数和评估指标有两个不同的用途。模型使用损失函数来了解输入和输出之间的关系。评估指标用于评估学习的关系的良好程度。以下是模型评估讨论的链接:https://scikit-learn.org/stable/modules/model_evaluation.html
  1. 我不确定您在这里问的是什么。你能澄清这个问题吗?

答案 1 :(得分:0)

'binary:logistic'使用-(y*log(y_pred) + (y-1)*(log(1-y_pred))

'reg:logistic'使用(y - y_pred)^2

要获得误差的总估算值,我们将所有误差相加并除以样本数。


您可以在基础知识中找到它。当看线性回归VS逻辑回归时。

线性回归使用(y - y_pred)^2作为成本函数

逻辑回归使用-(y*log(y_pred) + (y-1)*(log(1-y_pred))作为Cost函数


评估指标完全不同。他们设计评估您的模型。您可能会对它们感到困惑,因为使用某些与损失函数相同的评估指标是合乎逻辑的,例如回归问题中的MSE。但是,在二进制问题中,查看logloss并不总是明智的。我的经验使我(在分类问题中)通常会关注AUC ROC

编辑


根据xgboost文档:

  

reg:linear:线性回归

     

reg:logistic:逻辑回归

     

binary:logistic:用于二进制分类的logistic回归,输出   概率

所以我猜:

reg:linear:正如我们所说的(y - y_pred)^2

reg:logistic是-(y*log(y_pred) + (y-1)*(log(1-y_pred)),并以0.5阈值舍入预测

binary:logistic是简单的-(y*log(y_pred) + (y-1)*(log(1-y_pred))(返回概率)

您可以对其进行测试,并查看它是否按照我的编辑进行。如果是这样,我将更新答案,否则,我将其删除:<< / p>