15

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

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

4

2 回答 2

10

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

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

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


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

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

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


评估指标是完全不同的东西。他们设计来评估您的模型。你可能会被它们弄糊涂,因为使用一些与损失函数相同的评估指标是合乎逻辑的,比如MSE在回归问题中。然而,在二元问题中,查看logloss. 我的经验认为我(在分类问题中)通常会关注AUC ROC.

编辑


根据 xgboost 文档:

reg:linear:线性回归

reg:logistic:逻辑回归

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

所以我猜:

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

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

binary:logistic is plain -(y*log(y_pred) + (1-y)*(log(1-y_pred)))(返回概率)

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

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