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和 MLogLoSS可以用作<代码> ValueMealth)。这是正确的吗?如果是,那么对于分类问题,您如何使用
    rmse
    作为性能指标
  • objective
    的两个选项为例,
    reg:logistic
    binary:logistic
    。对于0/1分类,通常应将二元逻辑损失或交叉熵视为损失函数,对吗?那么这两个选项中的哪一个是这个损失函数,另一个的值是多少?比如说,如果
    binary:logistic
    表示交叉熵损失函数,那么
    reg:logistic
    做什么
  • multi:softmax
    multi: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
    使用什么损失函数

  • 是的,损失函数和评估指标有两个不同的用途。模型使用损失函数来学习输入和输出之间的关系。评估指标用于评估学习到的关系有多好。以下是模型评估讨论的链接:
  • 我不确定你到底在问什么。你能澄清这个问题吗

  • “二进制:逻辑”使用
    -(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]中)。