如何解决XGBoost-帮助解释助推器行为为什么第 0 次迭代总是最好的?
我正在训练 XGBoost 模型,但无法解释模型行为。
- early_stopping_rounds =10
- num_boost_round=100
- 数据集不平衡,有 458644 个 1 和 7975373 个 0
- 评估指标是 AUCPR
- param = {'max_depth':6,'eta':0.03,'silent':1,'colsample_bytree': 0.3,'objective':'binary:logistic','nthread':6,'subsample': 1、'eval_metric':['aucpr']}
根据我对“early_stopping_rounds”的理解,在测试/评估数据集的评估指标 (aucpr) 连续 10 轮未观察到任何改进后,训练应该停止。然而,就我而言,即使评估数据集的 AUCPR 有明显改善,训练在第 10 个提升阶段后仍然停止。请参阅下面的训练日志。此外,当第 10 次迭代的 AUCPR 明显高于第 0 次迭代时,最佳迭代结果是第 0 次。
这是正确的吗?如果不是,可能会出什么问题?如果是,请纠正我对早期停止轮次和最佳迭代的理解。
解决方法
非常有趣!!
所以事实证明 early_stopping
看起来最小化(RMSE、log loss 等)和最大化(MAP、NDCG、AUC) - https://xgboost.readthedocs.io/en/latest/python/python_intro.html
当您使用 aucpr
时,它实际上是在尝试将其最小化 - 也许这是默认行为。
在调用 maximize=True
- https://github.com/dmlc/xgboost/issues/3712 时尝试设置 xgboost.train()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。