首页 > 解决方案 > XGBoost 训练时间似乎太长了

问题描述

我正在尝试使用 xgboost 包在 Python 中训练 XGBoost 分类器。我对分类器的所有参数使用默认值,我的训练集有大约 16,000 个元素和每个元素的 180,000 个特征。我没有使用 gpu 来训练模型,但训练过程仍然花费了五个多小时,并且仍在继续。我有 32GB 的 RAM 和 6 核 Intel I7。我想知道这是否是用我拥有的数据量训练这个分类器的正常时间,因为我听说有人在几分钟内训练模型。

标签: pythonmachine-learningxgboosttraining-data

解决方案


如果关注训练时间,则可以将树生长策略切换tree_methodhist基于直方图的方法。对于 GPU,它应该设置为gpu_hist. 您可以在此处找到有关其 xgboost 实现的更多详细信息http://arxiv.org/abs/1603.02754

这是在不影响解决方案质量的情况下实现超快速训练的秘诀。事实上,基于 GPU 的训练甚至 lightGBM 等都依赖于基于直方图的技术来进行更快的训练和随后的迭代/实验,这在时间受限的 kaggle 类型的比赛中非常重要。hist可能会将训练时间减少一半或更少,而gpu_hist在 gpu 上可能需要几分钟。

PS:我建议通过删除相关/等级相关的特征来降低数据的维度(16k X 180k),这不仅可以进一步提高训练时间,还可以提高模型性能。


推荐阅读