我正在使用 60% 的数据训练 Xgboost,并使用 40% 的数据进行测试。
在 60% 的数据中,我使用 5 折验证来找到最佳的树数。我发现树的最佳数量是 150 左右。
我在剩下的 40% 的数据中评估我的模型,我对性能感到满意,所以现在我可以部署我的模型了。但是,在此之前,我想进行最后的再训练以利用我的所有数据。我想知道当我使用完整数据集进行训练时,在交叉验证中获得的树的数量是否是最佳的。我的直觉告诉我应该使用超过 150 棵树,因为我有更多的数据并且我可以减少过度拟合。
关于再训练模型的树数是否有任何合理的决定?
在我看来,我至少有 3 个:
- 使用完整数据进行交叉验证并获得最佳数量的树(这当然可以,但它是最慢的)。
- 使用相同数量的树(这是最保守的,我们可能会欠拟合数据)。
- 使用启发式算法,例如 final_trees = 150*100/60。我对合法的启发式方法非常感兴趣,在这种方法中我不会欠拟合,也不需要再次训练模型进行交叉验证。
你听说过这样的启发式方法吗?
注意:这不仅特定于 Xgboost,因为任何具有控制正则化参数的模型也可能存在相同的问题。