Machine learning 对于如何将数据集划分为训练集和验证集,是否有经验法则?

Machine learning 对于如何将数据集划分为训练集和验证集,是否有经验法则?,machine-learning,Machine Learning,对于如何最好地将数据划分为训练集和验证集,是否有经验法则?50/50平分是否可取?或者,相对于验证数据,拥有更多培训数据是否有明显的优势(反之亦然)?或者这个选择很大程度上取决于应用程序 我一直在使用80%/20%的培训和验证数据,但我选择这个部门时没有任何原则性的理由。在机器学习方面更有经验的人能给我一些建议吗?你会惊讶地发现80/20是一个非常常见的比率,通常被称为。如果你使用这个比率,这通常是一个安全的赌注 但是,根据您采用的培训/验证方法,比率可能会发生变化。例如:如果您使用10倍交叉验

对于如何最好地将数据划分为训练集和验证集,是否有经验法则?50/50平分是否可取?或者,相对于验证数据,拥有更多培训数据是否有明显的优势(反之亦然)?或者这个选择很大程度上取决于应用程序


我一直在使用80%/20%的培训和验证数据,但我选择这个部门时没有任何原则性的理由。在机器学习方面更有经验的人能给我一些建议吗?

你会惊讶地发现80/20是一个非常常见的比率,通常被称为。如果你使用这个比率,这通常是一个安全的赌注

但是,根据您采用的培训/验证方法,比率可能会发生变化。例如:如果您使用10倍交叉验证,那么您将在每次折叠时得到10%的验证集

对以下方面进行了一些研究:

为验证集保留的模式部分应为 与自由数的平方根成反比 可调参数

他们在结论中规定了一个公式:

验证集(v)与训练集(t)的大小比、v/t、比例等 ln(N/h-max),其中N是识别器和 h-max是这些族中最大的复杂性

他们所说的复杂性是:

每个识别器家族都有其复杂性,这 可能与描述有关,也可能与描述无关 长度、可调参数的数量或其他测量值 复杂性


根据第一条经验法则(即验证集应与自由可调参数数量的平方根成反比),可以得出结论,如果有32个可调参数,32的平方根为~5.65,分数应为1/5.65或0.177(v/t)。大约17.7%应该留待验证,82.3%用于培训。

去年,我担任教授:Andrew Ng的在线机器学习课程。他的建议是:

培训:60%

交叉验证:20%


测试:20%

有两个相互竞争的问题:训练数据越少,参数估计值的方差越大。测试数据越少,性能统计数据的差异就越大。从广义上讲,您应该关注数据的划分,以便方差都不太高,这更多地取决于每个类别中实例的绝对数量,而不是百分比

如果您总共有100个实例,那么您可能需要交叉验证,因为没有一个单独的分割会在您的估计中给您带来令人满意的差异。如果您有100000个实例,那么您选择80:20分割还是90:10分割实际上并不重要(如果您的方法特别需要计算,您可以选择使用较少的训练数据)

假设您有足够的数据来进行适当的保留测试数据(而不是交叉验证),以下是处理差异的一种有指导意义的方法:

  • 将数据分为培训和测试(80/20确实是一个很好的起点)
  • 将培训数据分为培训和验证(同样,80/20是公平的划分)
  • 对训练数据的随机选择进行子采样,使用此数据训练分类器,并在验证集上记录性能
  • 尝试使用不同数量的训练数据进行一系列跑步:随机抽取20%,比如说10次,并观察验证数据的表现,然后对40%、60%、80%的数据进行同样的操作。您应该看到,数据越多,性能越好,但不同随机样本之间的差异也越小
  • 要获得由于测试数据大小引起的差异的处理方法,请反向执行相同的过程。对所有培训数据进行培训,然后对验证数据的百分比进行多次随机抽样,并观察性能。您现在应该发现,验证数据的小样本的平均性能与所有验证数据的性能大致相同,但测试样本数越少,差异就越大

  • 也许63.2%/36.8%是一个合理的选择。原因可能是,如果您的总样本量为n,并且希望随机抽样替换初始n个案例中的n个案例(也称为重新抽样,如统计引导中所述),则重新抽样中选择单个案例的概率约为0.632,前提是n不太小,如下所述:

    对于n=250的样本,选择一个个案进行4位数重新抽样的概率为0.6329。
    对于n=20000的样本,概率为0.6321。

    这完全取决于手头的数据。如果您有大量的数据,那么如上所述,80/20是一个不错的选择。但是,如果你不使用50/50分割法进行交叉验证,可能会对你有更多帮助,并防止你创建一个过度拟合训练数据的模型。

    好吧,你应该再考虑一件事

    如果您有一个非常大的数据集,比如1000000个示例,那么分割80/10/10可能是不必要的,因为10%=100000个示例对于仅仅说模型工作正常来说可能太多了

    也许99/0.5/0.5就足够了,因为5000个示例可以代表数据中的大部分差异,基于测试和开发中的这5000个示例,您可以很容易地看出模型运行良好


    不要仅仅因为听说80/20没问题就使用它。考虑一下测试集的用途。

    假设您的数据较少,我建议尝试70%、80%和90%,并测试哪个结果更好。在90%的情况下,10%的测试很有可能会导致错误的准确性。

    谢谢,这也很有帮助!我要试一试。仅供参考,我有大约6000个培训数据实例。我是