交叉验证+提前停止是否显示小样本的实际性能?
Does cross validation + early stopping show the actual performance for small sample?
我在一些模拟中 运行ning xgboost,我的样本量是 125。我正在测量 5 倍交叉验证误差,即在每一轮中我的训练样本量是 100 并且测试样本大小为 25。假设所有其他参数都是固定的,但 "n_estimators",即增强轮数。
我有两个选择:
运行 不同 n_estimators 的 5 倍 cv 并且不使用提前停止——在这种情况下,我可能会选择最好的 n_estimator简历结果;
进一步将训练样本拆分为训练 (80) 和验证 (20),在 80 个训练观察上训练模型并在 20 个验证观察上监控早停——在这种情况下我可能select一个巨大的n_estimator让它自动停止。
问题是
选项1中,如果我有另一个单独的测试样本,我可以在测试数据上使用5个交叉验证模型并计算平均/多数投票吗?或者我是否需要在所有 125 个 obs 上使用最佳参数再次训练模型并在测试集上进行预测?
在选项2中,80个训练obs是否足以训练模型/20个验证obs是否足以监控性能? (在选项 1 中,我们也有一个小样本量,但更好一点)
哪个选项在比较 xgboost 模型和其他模型方面更好?
总结:小样本选择模型的最佳方式是什么?
使用非常少量的数据作为验证数据,过拟合的风险非常高,不推荐。选项 1 优于选项 2,交叉验证的平均数比使用最佳参数再次训练模型更好。
但是,在这种小样本情况下,最好的方法是选择简单的模型而不是复杂的模型。
我在一些模拟中 运行ning xgboost,我的样本量是 125。我正在测量 5 倍交叉验证误差,即在每一轮中我的训练样本量是 100 并且测试样本大小为 25。假设所有其他参数都是固定的,但 "n_estimators",即增强轮数。
我有两个选择:
运行 不同 n_estimators 的 5 倍 cv 并且不使用提前停止——在这种情况下,我可能会选择最好的 n_estimator简历结果;
进一步将训练样本拆分为训练 (80) 和验证 (20),在 80 个训练观察上训练模型并在 20 个验证观察上监控早停——在这种情况下我可能select一个巨大的n_estimator让它自动停止。
问题是
选项1中,如果我有另一个单独的测试样本,我可以在测试数据上使用5个交叉验证模型并计算平均/多数投票吗?或者我是否需要在所有 125 个 obs 上使用最佳参数再次训练模型并在测试集上进行预测?
在选项2中,80个训练obs是否足以训练模型/20个验证obs是否足以监控性能? (在选项 1 中,我们也有一个小样本量,但更好一点)
哪个选项在比较 xgboost 模型和其他模型方面更好?
总结:小样本选择模型的最佳方式是什么?
使用非常少量的数据作为验证数据,过拟合的风险非常高,不推荐。选项 1 优于选项 2,交叉验证的平均数比使用最佳参数再次训练模型更好。
但是,在这种小样本情况下,最好的方法是选择简单的模型而不是复杂的模型。