首页 > 解决方案 > 如何进行 10 次随机拆分以保证机器学习结果的一致性

问题描述

我刚刚读了一篇关于图像流行度预测的论文。作者将数据分成两部分,一部分用于训练,另一部分用于测试。在训练集上使用 5 折交叉验证来找到最佳参数。并且实验的结果是预测流行度和实际流行度之间的等级相关性。

为了保证结果的一致性,作者对 10 次随机分割的性能进行了平均。我对 10 个随机拆分感到困惑。

标签: pythonmachine-learningcross-validation

解决方案


阅读什么是交叉验证应该会有所帮助。
我不能不看论文就说出作者做了什么,但交叉验证的想法是不对测试数据集进行拆分,而是在对整个数据集进行 K 次拆分后实际训练和丢弃模型,使用每个子集一次用于测试。

假设你在那方面没问题,你的措辞让我觉得在选择了最佳参数后,这个人再次从步骤 1 开始以 50-50 分割,这次没有更改参数,实际上得到了一个新的训练集和测试集。他总共做了10次。

如果是这种情况,这基本上意味着他在对整个集合执行 50-50 随机拆分 9 次后,又训练了 9 次相同的模型架构,并在 10 个分数中平均了他的“性能”指标。

编辑: 论文参考

3.2 评估对于上述每个设置,我们将数据随机分成两半,一用于训练,另一半用于测试。我们对 10 次随机分割的性能进行平均,以确保结果的一致性;总体而言,我们发现我们的结果与跨拆分的低标准偏差高度一致。

好吧,所以是的,作者确实“重复”了他的工作 10 次,每次创建一个随机的 50-50 拆分开始。

所以,它的本质是,5折交叉验证发生在训练集的训练过程中。剩余的 50% 用作评价。不要把它想象成一个典型的测试集,而是一个“保留”集。由于交叉验证意味着 50% 的数据用于在整个过程中进行训练和测试。

那时,除了超参数和相应的“保留”50% 数据的结果之外,您放弃了所有工作。现在您再次从整个数据集开始,并进行不同但随机的 50% 拆分。这一次,使用相同的超参数,您再次在新的训练集上进行训练,并在新的“保留”集上测试该结果。并重复。


推荐阅读