繁体   English   中英

XGBoost的损失函数和评价指标

[英]The loss function and evaluation metric of XGBoost

我现在对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: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使用什么损失函数?

'binary:logistic' 使用-(y*log(y_pred) + (1-y)*(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 为-(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))) (返回概率)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM