我现在对XGBoost
中使用的损失函数感到困惑。这是我感到困惑的地方:
objective
,这是损失函数,需要最小化; eval_metric
:用于表示学习结果的指标。这两个是完全不相关的(如果不考虑分类,仅logloss
和mlogloss
可以用作eval_metric
)。它是否正确?如果是我,那么对于分类问题,如何使用rmse
作为性能指标?objective
和reg:logistic
的两个选项为例。对于0/1分类,通常应将二进制逻辑损失或交叉熵视为损失函数,对吗?那么,这两个选项中的哪个选项适用于此损失函数,另一个选项的价值是什么?假设binary:logistic
代表交叉熵损失函数,那么binary:logistic
会做什么?reg:logistic
和multi:softmax
有什么区别?它们是否使用相同的损失函数,只是输出格式不同?如果是这样,那么multi:softprob
和reg: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
使用什么损失函数?
答案 0 :(得分:0)
答案 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>