XGBoost 的损失函数和评价指标

Bs *_* He 11 python machine-learning xgboost xgbclassifier

我现在对XGBoost. 这是我感到困惑的方式:

  1. 我们有objective,这是需要最小化的损失函数;eval_metric:用于表示学习结果的度量。这两者完全无关(如果我们不考虑仅用于分类loglossmlogloss可以用作eval_metric)。这样对吗?如果是,那么对于分类问题,您如何将其rmse用作性能指标?
  2. 以两个选项objective为例,reg:logisticbinary:logistic。对于 0/1 分类,通常应将二元逻辑损失或交叉熵视为损失函数,对吗?那么这两个选项中的哪一个是针对这个损失函数的,另一个的值是多少?说,如果binary:logistic代表交叉熵损失函数,那么什么reg:logistic呢?
  3. 什么之间的区别multi:softmaxmulti:softprob?他们是否使用相同的损失函数,只是输出格式不同?如果是的话,那应该是相同的reg:logistic,并binary:logistic为好,对不对?

第二个问题的补充

比如说,0/1 分类问题的损失函数应该是 L = sum(y_i*log(P_i)+(1-y_i)*log(P_i))。所以如果我需要在binary:logistic这里选择,或者reg:logistic让xgboost分类器使用L损失函数。如果是binary:logistic,那么损失函数reg:logistic使用什么?

Era*_*she 10

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

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

为了获得总的误差估计,我们将所有误差相加并除以样本数。


您可以在基础知识中找到这一点。在查看线性回归 VS Logistic 回归时。

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

逻辑回归-(y*log(y_pred) + (y-1)*(log(1-y_pred)))用作成本函数


评估指标是完全不同的东西。他们旨在评估您的模型。您可能会对它们感到困惑,因为使用一些与损失函数相同的评估指标是合乎逻辑的,例如MSE在回归问题中。但是,在二进制问题中,查看logloss. 我的经验认为我(在分类问题上)一般都看AUC ROC.

编辑


根据 xgboost 文档:

reg:linear: 线性回归

reg:logistic: 逻辑回归

二元:逻辑:二元分类的逻辑回归,输出概率

所以我猜:

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

reg:logistic is-(y*log(y_pred) + (y-1)*(log(1-y_pred)))和 0.5 阈值的四舍五入预测

二元:逻辑是简单的-(y*log(y_pred) + (1-y)*(log(1-y_pred)))(返回概率)

你可以测试一下,看看它是否像我编辑的那样。如果是这样,我会更新答案,否则,我将删除它:<


Jos*_*ook 1

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