SKLearn 包装器中 XGBoost 的决策函数

Posted

技术标签:

【中文标题】SKLearn 包装器中 XGBoost 的决策函数【英文标题】:Decision_function for XGBoost in SKLearn wrapper 【发布时间】:2018-09-21 17:46:00 【问题描述】:

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

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

【问题讨论】:

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

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

为什么 predict_proba 与分数不同?

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

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

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

【讨论】:

以上是关于SKLearn 包装器中 XGBoost 的决策函数的主要内容,如果未能解决你的问题,请参考以下文章

python机器学习之lightBGM

sklearn 决策树

决策树唯一性sklearn

如何在 sklearn 的集成分类器中使用自定义分类器?

面试笔试题集:集成学习,树模型,Random Forests,GBDT,XGBoost

XGBoost 和 Sklearn 中的日志丢失是不是相同?