【问题标题】:Decision_function for XGBoost in SKLearn wrapperSKLearn 包装器中 XGBoost 的决策函数
【发布时间】:2023-03-07 08:56:01
【问题描述】:

model.predict_proba(X)[:,0] 与 SKLearn 中的常规 Grad Boost 决策树分类器的 model.decision_function(X) 相比,我得到了不同的结果,所以我知道那是不一样的。

我想要模型的分数。绘制 ROC 曲线等。如何使用 SKLearn 包装器获得 XGBoost 分类器的决策函数?以及为什么 predict_proba 与分数不同?

【问题讨论】:

  • 为什么它们应该是一样的?您是否使用了完全相同的算法,具有完全相同的超参数和随机种子?
  • 是的,它与训练过的模型相同。我在问这两个函数有什么区别。
  • 什么是 model.decision_function(X) ?你有这方面的 API/实现文档吗?
  • 它在确定阈值之前为您提供分类器的输出。它因算法而异。对于 SVM,它是到决策超平面的距离 (stackoverflow.com/questions/20113206/…)

标签: machine-learning scikit-learn xgboost


【解决方案1】:

一般来说,我不希望sklearn.GradientBoostingClassifierxgboost.XGBClassifier 同意,因为它们使用非常不同的实现。但是您尝试比较的数量之间也存在概念上的差异:

为什么 predict_proba 与分数不同?

概率(model.predict_proba(X) 的输出)是从应用损失/目标函数的分数(model.decision_function(X) 的输出)中获得的,请参阅here for the call to the loss functionhere for the actual transformation

我想要模型的分数。绘制 ROC 曲线等。如何使用 SKLearn 包装器获得 XGBoost 分类器的决策函数?

对于 ROC 曲线,您需要使用 xgbmodel.predict_proba(X)[:,1],即对应于类 1 的第二列。

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 2017-02-28
    • 2014-05-13
    • 1970-01-01
    • 2013-10-04
    • 2019-03-04
    • 1970-01-01
    • 2020-07-26
    • 2019-08-31
    相关资源
    最近更新 更多