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.GradientBoostingClassifier
和xgboost.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 的决策函数的主要内容,如果未能解决你的问题,请参考以下文章