小数据集 CV

数据挖掘 交叉验证 超参数调整 网格搜索
2022-02-19 05:46:46

我有一个非常小的数据集(150 条记录),包含 20 个特征,试图预测二元结果。由于体积小,我选择做 10 CV 而不是训练/测试作为训练/测试拆分。

我想知道我是否在 10 倍上进行 GridsearchCV,获得最佳参数,然后使用这些参数评估 10 倍的性能 - 这是“合法”还是过度拟合?我想对整个数据运行最佳参数吗?或者我可以再用10倍吗?

另外,LOOCV 是否会在性能部分提供更好的概括?(不在网格搜索上)?

1个回答

我想知道我是否在 10 倍上进行 GridsearchCV,获得最佳参数,然后使用这些参数评估 10 倍的性能 - 这是“合法”还是过度拟合?我想对整个数据运行最佳参数吗?或者我可以再用10倍吗?

我很确定您不会因此入狱;)但由于数据泄漏,这将是不正确的:您将用于最终评估的数据将与用于学习最佳参数的数据相同。因此,如果在调优(这是一种监督训练)过程中找到的最佳参数是偶然发生的,那么最终的性能将被人为地提高。

正确的方法是:

  • 为了保留新的测试集,即在训练集上使用 CV 运行网格搜索,然后在新的测试集上评估最终模型。
  • 要使用嵌套 CV,即双 CV 循环:对于每个外部 CV 折叠,在训练集上运行网格搜索内部 CV,然后在外部 CV 测试集上进行评估。不用说,它有点复杂。

另外,LOOCV 是否会在性能部分提供更好的概括?(不在网格搜索上)?

留一份简历与k-折叠简历,但k等于实例的数量,所以在你的情况下,它就像 150 倍的 CV。优点:每次都有更多的训练数据,因此有可能更好的模型;缺点:计算成本较高,因为训练/测试重复了 150 次。