Python XGBoost的损失函数与评估度量
我现在对Python XGBoost的损失函数与评估度量,python,machine-learning,xgboost,xgbclassifier,Python,Machine Learning,Xgboost,Xgbclassifier,我现在对XGBoost中使用的损失函数感到困惑。以下是我感到困惑的原因: 我们有目标,即需要最小化损失函数评估指标:用于表示学习结果的指标。这两个是完全不相关的(如果我们不考虑分类仅是代码> LoGoSoS和 MLogLoSS可以用作 ValueMealth)。这是正确的吗?如果是,那么对于分类问题,您如何使用rmse作为性能指标 以objective的两个选项为例,reg:logistic和binary:logistic。对于0/1分类,通常应将二元逻辑损失或交叉熵视为损失函数,对吗?那么这两
XGBoost
中使用的损失函数感到困惑。以下是我感到困惑的原因:
目标
,即需要最小化损失函数<代码>评估指标:用于表示学习结果的指标。这两个是完全不相关的(如果我们不考虑分类仅是代码> LoGoSoS和rmse
作为性能指标objective
的两个选项为例,reg:logistic
和binary:logistic
。对于0/1分类,通常应将二元逻辑损失或交叉熵视为损失函数,对吗?那么这两个选项中的哪一个是这个损失函数,另一个的值是多少?比如说,如果binary:logistic
表示交叉熵损失函数,那么reg:logistic
做什么multi:softmax
和multi:softprob
之间有什么区别?它们是否使用相同的损耗函数,只是输出格式不同?如果是这样,那么reg:logistic
和binary:logistic
也应该是相同的,对吗L=sum(y_i*log(P_i)+(1-y_i)*log(P_i))
。因此,如果我需要在这里选择binary:logistic
,或者reg:logistic
让xgboost分类器使用L
损失函数。如果是binary:logistic
,那么reg:logistic
使用什么损失函数
“二进制:逻辑”使用
-(y*log(y\u pred)+(y-1)*(log(1-y\u pred))
“注册:物流”使用(y-y\u pred)^2
为了得到误差的总体估计,我们将所有误差相加,然后除以样本数
你可以在基础中找到这一点。在线性回归与逻辑回归的比较中 线性回归使用
(y-y\u pred)^2
作为成本函数
逻辑回归使用-(y*log(y_pred)+(y-1)*(log(1-y_pred))
作为成本函数
评估指标是完全不同的东西。他们设计来评估你的模型。您可能会被它们弄糊涂,因为在回归问题中使用一些与损失函数相同的评估指标是合乎逻辑的,比如
MSE
。然而,在二进制问题中,查看logloss
并不总是明智的。根据我的经验,我(在分类问题上)通常会看AUC ROC
编辑
根据xgboost文件: reg:线性:线性回归 注册:逻辑:逻辑回归 二元:逻辑:二元分类的逻辑回归,输出 概率 所以我猜: reg:linear:正如我们所说的,
(y-y\u pred)^2
reg:logistic是-(y*log(y_pred)+(y-1)*(log(1-y_pred))
和0.5阈值的舍入预测
二进制:逻辑是普通的-(y*log(y_pred)+(1-y)*(log(1-y_pred))
(返回概率)
你可以测试它,看看它是否像我编辑的那样。如果是这样,我将更新答案,否则,我将删除它:@JoshuaCook,它用Keras解释了第一个问题。是的,但你的第一个问题本质上是概念性的,并不特定于图书馆。reg:logistic通常将成本函数计算为(y-y_pred)^2和平均样本维度。我为第二个问题添加了一些补充,谢谢。还是没听清你的问题。你问这些是在什么背景下?让我简单一点。
objective:'binary:logistic'
使用什么损失函数,以及objective:'reg:logistic'
使用什么损失函数感谢您的回复。听起来像是reg:logistic
使用rmse
作为损失(成本)函数,这在reg:linear
中更直观。我不明白为什么在逻辑回归中,rmse
仍然被使用,以至于y-y_pred
等于1,0,-1。@b我想我错了。我会编辑,你可以检查,如果是这样,我会修正答案我认为我们应该保留编辑;包作者的回答似乎证实了这一点。但我将等待其他人是否给出更可靠的答案。@Eranmos您能确认logloss的下半部分是否为y-1吗?我想应该是1-y@PaladiN对不起,伙计。它应该是1-y(因为我们知道y在[0,1]中)。