Machine learning 对于如何将数据集划分为训练集和验证集,是否有经验法则?
对于如何最好地将数据划分为训练集和验证集,是否有经验法则?50/50平分是否可取?或者,相对于验证数据,拥有更多培训数据是否有明显的优势(反之亦然)?或者这个选择很大程度上取决于应用程序Machine learning 对于如何将数据集划分为训练集和验证集,是否有经验法则?,machine-learning,Machine Learning,对于如何最好地将数据划分为训练集和验证集,是否有经验法则?50/50平分是否可取?或者,相对于验证数据,拥有更多培训数据是否有明显的优势(反之亦然)?或者这个选择很大程度上取决于应用程序 我一直在使用80%/20%的培训和验证数据,但我选择这个部门时没有任何原则性的理由。在机器学习方面更有经验的人能给我一些建议吗?你会惊讶地发现80/20是一个非常常见的比率,通常被称为。如果你使用这个比率,这通常是一个安全的赌注 但是,根据您采用的培训/验证方法,比率可能会发生变化。例如:如果您使用10倍交叉验
我一直在使用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分割实际上并不重要(如果您的方法特别需要计算,您可以选择使用较少的训练数据) 假设您有足够的数据来进行适当的保留测试数据(而不是交叉验证),以下是处理差异的一种有指导意义的方法:
也许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个培训数据实例。我是