我在某些模拟中运行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模型与其他模型进行比较?
答案 0 :(得分:0)
使用非常少量的数据作为验证数据具有非常高的过拟合风险,因此不建议这样做。选项1优于选项2,并且对交叉验证求平均要比使用最佳参数再次训练模型更好。
但是,在这种小样本情况下,最好的方法是选择一个简单的模型而不是复杂的模型。