为什么 GradientBoostClassifier 会比 XGBoostClassifier 做得更好?

数据挖掘 Python xgboost 自然梯度提升
2022-01-21 11:35:27

我正在研究 Kaggle 房屋贷款模型,有趣的是,GradientBoostClassifier 的得分比 XGBClassifier 高得多。同时,它似乎没有过度拟合。(注意,我正在使用默认设置运行这两个算法)。从我一直在阅读的内容来看,XGBClassifier 与 GradientBoostClassifier 相同,只是更快、更健壮。因此,我现在很困惑,为什么 XGB 会比 GradientBoostClassifier 过拟合这么多,而它应该反其道而行之?发生这种情况的充分理由是什么?

1个回答

GradientBoostClassifier 更慢但更精确。在您的情况下,它可能会找到一个更好的模型,而不会受到过度拟合的影响。

以下是您正在寻找的一些主要差异。

XGBClassifier 旨在更快。但是,XGBClassifier 需要一些捷径来运行得更快。例如,为了节省时间,XGBClassifier 将使用分割的近似值,而不是花费太多时间来计算和评估最佳分割。通常 XGB 结果会很接近,您不会看到太大的差异,但您的情况可能是个例外。

如果您仍然好奇,可以尝试更改 XGBClassifier 模型中的一些参数,例如 tree_method='exact' 或者您可以修改 XGBClassifier 中的 sketch_eps 参数以更紧密地匹配 GradientBoostClassifier 结果。当然,这会因此减慢 XGBClassifier 模型的速度。

sketch_eps [默认=0.03]

仅用于 tree_method=approx。

这大致转化为 O(1 / sketch_eps) 个 bin。与直接选择分箱数相比,这具有草图准确性的理论保证。

通常用户不必对此进行调整。但考虑设置为较小的数字,以便更准确地枚举拆分候选者。

范围:(0, 1)