Answers:
存在两个相互竞争的问题:训练数据较少,您的参数估计值会有较大的差异。使用更少的测试数据,您的性能统计数据将具有更大的差异。广义上讲,您应该关注数据的划分,以确保方差都不会太大,这更多地取决于每个类别中实例的绝对数量而不是百分比。
如果您总共有100个实例,那么您可能会被交叉验证所困扰,因为没有任何拆分会给您估计值带来令人满意的差异。如果您有100,000个实例,则选择80:20拆分还是90:10拆分并不重要(实际上,如果您的方法特别需要计算,则可以选择使用较少的训练数据)。
假设您有足够的数据来执行适当的保留测试数据(而不是交叉验证),则以下是一种指导处理差异的方法:
您会惊讶地发现80/20是相当普遍的比率,通常称为帕累托原理。如果使用该比率,通常是一个安全的选择。
但是,根据您采用的培训/验证方法,比率可能会发生变化。例如:如果您使用10倍交叉验证,那么最终将得到每折叠10%的验证集。
已经对训练集和验证集之间的适当比例进行了一些研究:
为验证集保留的模式比例应与自由可调参数数量的平方根成反比。
他们在结论中指定了一个公式:
验证集(v)与训练集(t)的大小比v / t,类似于ln(N / h-max),其中N是识别器的族数,h-max是这些族的最大复杂度。
它们所谓的复杂性是:
识别器的每个家族都以其复杂性为特征,该复杂性可能与VC维度,描述长度,可调参数的数量或其他复杂性度量无关。
根据第一条经验法则(即验证集应与自由可调整参数的数量的平方根成反比),可以得出结论,如果您有32个可调整参数,则32的平方根为〜5.65,分数应为1 / 5.65或0.177(v / t)。应该保留大约17.7%的资源用于验证,保留82.3%的资源用于培训。
去年,我参加了Andrew Ng教授的在线机器学习课程。他的建议是:
培训:60%
交叉验证:20%
测试:20%
in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total.
他建议可能是99.5:0.25:0.25。
好吧,您应该再考虑一件事。
如果您拥有非常大的数据集(例如1,000,000个示例),则可能不需要拆分80/10/10,因为无需10%= 100,000个示例即可告诉模型正常运行。
也许99 / 0.5 / 0.5就足够了,因为5,000个示例可以代表数据中的大部分差异,并且基于测试和开发中的这5,000个示例,您可以很容易地看出模型运行良好。
假设您的数据较少,我建议尝试70%,80%和90%并进行测试,以得出更好的结果。在90%的情况下,对于10%的测试,您可能会获得较差的准确性。
也许63.2%/ 36.8%是一个合理的选择。其原因是,如果你有一个总样本量ñ,想随机抽样与更换(又名重采样,在统计自举)ñ情况下走出最初的ñ,在被选择的个别情况的概率如果n不太小,则重新采样将约为0.632 ,如此处所述:https : //stats.stackexchange.com/a/88993/16263
对于n = 250 的样本,为重新采样至4位数选择单个案例的概率为0.6329。对于n = 20000 的样本,概率为0.6321。