【发布时间】:2020-02-09 23:03:53
【问题描述】:
我在一些模拟上运行 xgboost,其中我的样本大小为 125。我正在测量 5 倍交叉验证误差,即在每一轮中,我的训练样本大小为 100,测试样本大小为 25。假设所有其他参数是固定的,但“n_estimators”,即提升轮数。
我有两个选择:
对不同的 n_estimators 运行 5 倍 cv,不要使用 early stopping——在这种情况下,我可能会从 cv 结果中选择最好的 n_estimator;
进一步将训练样本分为训练 (80) 和验证 (20),在 80 个训练观察值上训练模型并监控 20 个验证观察值的提前停止——在这种情况下,我可能会选择一个巨大的 n_estimator让它自动停止。
问题是
在选项 1 中,如果我有另一个单独的测试样本,我可以在测试数据上使用 5 个交叉验证模型并计算平均/多数票吗?还是我需要在所有 125 个 obs 上使用最佳参数再次训练模型并在测试集上进行预测?
在选项 2 中,80 个训练 obs 是否足以训练模型/20 个验证 obs 是否足以监控性能? (在选项 1 中,我们的样本量也很小,但要好一些)
在将 xgboost 模型与其他模型进行比较时,哪个选项更好?
总结:对于小样本量选择模型的最佳方法是什么?
【问题讨论】:
标签: cross-validation xgboost train-test-split