是否有方法可以xgboost在优化的时间内调整和训练模型 - 当我调整参数并训练模型时,执行大约需要 12 小时?
我想用 100 个种子运行该解决方案 100 次;我的机器有 8 GB RAM,我无法购买云解决方案。
是否有方法可以xgboost在优化的时间内调整和训练模型 - 当我调整参数并训练模型时,执行大约需要 12 小时?
我想用 100 个种子运行该解决方案 100 次;我的机器有 8 GB RAM,我无法购买云解决方案。
通常,XGBoost 不需要调整很多参数即可获得良好的性能。
我将从优化n_estimators、max_depth 和 min_child_weight参数开始。这应该已经让你足够接近了。
您可以做的另一件事来加速这个过程是更喜欢随机搜索而不是网格搜索,因为在大多数情况下是一样或更有效。
您还可以查看LightGBM实现,它比 XGBoost更快(并且需要更少的内存)。
您可以在交叉验证中使用较少的折叠,例如 GridSearch 中的 cv=2 或 cv=3 以节省时间和内存。
我通常会优化一些参数,例如:learning_rate、max_depth、min_child_weight 和 reg_alpha。
既然你提到你不能购买云解决方案,有一个名为 Google Colab https://colab.research.google.com/的免费云提供免费 RAM(我认为最多 25 GB)和 GPU。您可以上传您的 ipython 笔记本和数据集或将其链接到您的 Google Drive。我用它来调整参数,因为它比我的低 RAM 计算机快。
另一种运行超参数优化的方法是通过贝叶斯优化。skopt已经构建了一个类似的包来在xgboost其他scikit-learn预测器的上下文中实现它。
在此处查看文档:https ://scikit-optimize.github.io/#skopt.BayesSearchCV