首页 > 解决方案 > XGBoost - 帮助解释助推器的行为。为什么第 0 次迭代总是最好的?

问题描述

我正在训练 XGBoost 模型并且无法解释模型行为。

根据我对“early_stopping_rounds”的理解,训练应该在测试/评估数据集的评估指标(aucpr)连续 10 轮没有改善后停止。然而,在我的例子中,即使评估数据集的 AUCPR 有明显改善,训练仍然在第 10 个提升阶段后停止。请参阅下面的培训日志。此外,当第 10 次迭代的 AUCPR 明显高于第 0 次迭代时,最好的迭代是第 0 次迭代。

在此处输入图像描述 这是正确的吗?如果不是,可能出了什么问题?如果是,那么请纠正我对早期停止轮次和最佳迭代的理解。

标签: xgboost

解决方案


很有意思!!

所以事实证明,early_stopping看起来最小化(RMSE、日志损失等)和最大化(MAP、NDCG、AUC) - https://xgboost.readthedocs.io/en/latest/python/python_intro.html

当您使用aucpr时,它实际上是在尝试将其最小化——也许这是默认行为。

maximize=True调用时尝试设置xgboost.train()- https://github.com/dmlc/xgboost/issues/3712


推荐阅读