机器学习中的训练集,开发集与测试集
简单介绍以及他们的作用
进行机器学习,必须要准备数据集。一般情况下,所有的数据要求独立同分布(iid)。然后分成三个部分:
- 训练集(Train Set)
- 开发集(Dev Set)
- 测试集(Test Set)
顾名思义,训练集主要用来训练机器学习模型的参数。开发集用来对不同的超级参数进行选择,而且这一过程是个迭代过程,因为事先不知道哪个参数比较适合当前的问题,需要多次尝试。最后,测试集用来验证最终的机器学习系统的性能。
三个集合的比例
在机器学习发展的早期,数据量不是太大,一般几千到几万条数据,这三者的比例大约是:
Train Set | Dev Set | Test Set |
---|---|---|
60% | 20% | 20% |
而现如今随着互联网的发展,海量数据的获得成为可能,百万级别的数据已经比较平常,所以比例可以这样划分:
Train Set | Dev Set | Test Set |
---|---|---|
98% | 1% | 1% |
非独立同分布的case
现实工程实践中,有时候训练集和另外两种允许来自不同的分布,通俗的说,就是产生的数据方式不同,但是另外两种数据集,即开发集与测试集必须保持是同分布。