最终训练中的新参数

数据挖掘 机器学习 交叉验证 超参数调整
2021-09-28 12:50:21

我正在使用 60% 的数据训练 Xgboost,并使用 40% 的数据进行测试。

在 60% 的数据中,我使用 5 折验证来找到最佳的树数。我发现树的最佳数量是 150 左右。

我在剩下的 40% 的数据中评估我的模型,我对性能感到满意,所以现在我可以部署我的模型了。但是,在此之前,我想进行最后的再训练以利用我的所有数据。我想知道当我使用完整数据集进行训练时,在交叉验证中获得的树的数量是否是最佳的。我的直觉告诉我应该使用超过 150 棵树,因为我有更多的数据并且我可以减少过度拟合。

关于再训练模型的树数是否有任何合理的决定?

在我看来,我至少有 3 个:

  • 使用完整数据进行交叉验证并获得最佳数量的树(这当然可以,但它是最慢的)。
  • 使用相同数量的树(这是最保守的,我们可能会欠拟合数据)。
  • 使用启发式算法,例如 final_trees = 150*100/60。我对合法的启发式方法非常感兴趣,在这种方法中我不会欠拟合,也不需要再次训练模型进行交叉验证。

你听说过这样的启发式方法吗?

注意:这不仅特定于 Xgboost,因为任何具有控制正则化参数的模型也可能存在相同的问题。

1个回答

不受欢迎的观点:过拟合(仅次于数据泄漏)的第二种最快方法是超参数优化。

为什么?你假设你不会有协变量偏移,而在大多数情况下你可以押注它。因此,在火车上过多优化(可用数据)将是毁灭性的。

最合理的假设(我们必须确保它成立)是 60% 的数据代表 40% 以及大约未来看不见的数据,因此所有 150 棵树都应该捕获所有必要的信息。