我可以微调 xgboost 模型而不是重新训练它吗?

数据挖掘 机器学习 scikit-学习 xgboost
2021-09-30 13:48:53

我正在使用 xgboost 库。我的系统每晚运行一个 cronjob,它从数据库中提取数据并训练模型。但是,我想一次又一次地删除模型的重新训练,并使用数据库中的任何新数据对其进行微调。在 sklearn 的实施(http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html)中,可以使用 warm_start 选项,那么 xgboost 呢?

3个回答

我看到在 xgboost 的当前版本的 python 包装器中,您可以在 train 函数中指定文件名或现有的 xgboost 模型(类 Booster)。

应该注意的是,XGBoost 会在假设它可以访问整个数据集的情况下进行最佳分割,因此您可能会通过更新而不是重新训练而失去一些预测能力(当然这可能值得减少计算成本)。

请参阅有关此XGBoost github 问题的有趣讨论

你可以通过参数来做到这一点xgb_model拆分是固定的,但休假值会由您的新训练数据更新。

您可以在原始数据之后使用新数据来增加树拆分。

这是一个最小的示例,如下所示,

gbm_t = xgb.train(params_t, xgb_train_t, num_boost_round = num_round, evals= watchlist_t, xgb_model=gbm)