如何正确运用机器学习中的训练集、验证集和测试集?
作者头像
  • 黑石动态
  • 2020-05-11 20:53:23 4

本文主要讨论了如何从工程角度更好地理解和应用神经网络。我们将探讨在不同任务下选择合适的神经网络架构以及参数调优的方法。

训练网络的关键点

在训练神经网络时,需要做出许多决策,包括神经网络的层数、每层的隐藏单元数量、学习率以及各层使用的激活函数等。确定这些参数设置并不容易,那么在实际操作中,我们应该如何应对?

首先,可以先制定一个大致的模型参数方案,如设计具有特定层数和隐藏单元数量的神经网络,然后运行这些代码。通过运行结果,我们可以逐步调整模型参数,不断优化,直至达到预期效果。每次循环的效率直接影响项目的进展速度,而高质量的训练数据集、验证集和测试集的创建也有助于提升效率。

数据的划分

通常情况下,我们会将数据分为70%用于验证,30%用于测试。当然,也可以按照60%用于训练,20%用于验证,20%用于测试的比例来划分。当数据量较少时,例如只有100条、1000条或1万条数据,上述比例划分是合理的。

然而,在大数据时代,数据量可能达到百万级别。如果拥有100万条数据,可以选择1万条作为验证集,1万条作为测试集,这样训练集占比98%,验证集和测试集各占1%。对于更大规模的数据集,可以考虑将99.5%的数据用于训练,0.25%用于验证和测试,或者验证集占0.4%,测试集占0.1%。

为了确保训练集、验证集和测试集的数据分布一致,我们应尽量使它们来自相同的分布。因为验证集用于评估不同模型的表现,我们需要尽可能优化其性能。

是否需要测试集

测试集的主要作用是对最终选定的神经网络系统做出无偏估计。如果没有这个需求,可以不设置测试集。如果只有验证集而没有测试集,那么在训练集上训练,尝试不同的模型框架,并在验证集上评估这些模型,然后进行迭代和选择适用的模型。此时,验证集已经包含了测试集的数据,不再提供无偏的功能评估。

在机器学习中,如果只有训练集和验证集而没有独立的测试集,那么训练集依然被称为训练集,验证集则被称为测试集。但在实际应用中,人们常将测试集视为简单的交叉验证集使用。

当然,最好还是有测试集,因为训练集、验证集和测试集可以帮助加速神经网络的集成,更有效地衡量算法的偏差和方差,从而更高效地选择合适的方法来优化算法。

总结

  • 训练集:用于运行学习算法。
  • 开发集(交叉验证集):用于调整参数、选择特征及其他决策。
  • 测试集:用于评估算法性能,但不会据此改变学习算法或参数。尽量选择符合真实项目要求的数据作为测试集。
  • 开发集和测试集:应尽量服从相同的分布。
    本文来源:图灵汇
责任编辑: : 黑石动态
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
运用验证正确机器训练测试如何学习
    下一篇