交叉验证+提前停止可以显示小样本的实际性能吗?

时间:2019-10-12 19:41:39

标签: cross-validation xgboost train-test-split

我在某些模拟中运行xgboost,其中我的样本大小为125。我正在测量5倍交叉验证误差,即,在每一轮中,我的训练样本大小为100,测试样本大小为25。其他参数是固定的,但是是“ n_estimators”,即增强回合的次数。

我有两个选择:

  • 针对不同的n_estimator运行5倍cv,并且不使用提前停止-在这种情况下,我可以从cv结果中选择最佳的n_estimator;

  • 进一步将训练样本分为训练(80)和验证(20),在80个训练观察值上训练模型,并监视20个验证观察值的早期停止-在这种情况下,我可能选择一个巨大的n_estimator并使其自动停止。

问题是

  • 在选项1中,如果我还有另一个单独的测试样本,是否可以对测试数据使用5个交叉验证模型并计算平均/多数投票?还是我需要在所有125个观测点上使用最佳参数再次训练模型,并在测试集上进行预测?

  • 在选项2中,80个训练obs是否足以训练模型/ 20个验证obs是否足以监视性能? (在选项1中,我们的样本量也较小,但要好一些)

  • 哪个选项更适合将xgboost模型与其他模型进行比较?

1 个答案:

答案 0 :(得分:0)

使用非常少量的数据作为验证数据具有非常高的过拟合风险,因此不建议这样做。选项1优于选项2,并且对交叉验证求平均要比使用最佳参数再次训练模型更好。

但是,在这种小样本情况下,最好的方法是选择一个简单的模型而不是复杂的模型。