机器学习中的训练集,开发集与测试集

in #cn6 years ago

简单介绍以及他们的作用

进行机器学习,必须要准备数据集。一般情况下,所有的数据要求独立同分布(iid)。然后分成三个部分:

  • 训练集(Train Set)
  • 开发集(Dev Set)
  • 测试集(Test Set)

顾名思义,训练集主要用来训练机器学习模型的参数。开发集用来对不同的超级参数进行选择,而且这一过程是个迭代过程,因为事先不知道哪个参数比较适合当前的问题,需要多次尝试。最后,测试集用来验证最终的机器学习系统的性能。

三个集合的比例

在机器学习发展的早期,数据量不是太大,一般几千到几万条数据,这三者的比例大约是:

Train SetDev SetTest Set
60%20%20%

而现如今随着互联网的发展,海量数据的获得成为可能,百万级别的数据已经比较平常,所以比例可以这样划分:

Train SetDev SetTest Set
98%1%1%

非独立同分布的case

现实工程实践中,有时候训练集和另外两种允许来自不同的分布,通俗的说,就是产生的数据方式不同,但是另外两种数据集,即开发集与测试集必须保持是同分布。