1 数据集的划分比例

一般情况而言,当数据集数据量较少时,如数据集中只有10000条数据,且不划分验证集时,训练集测试集的比例一般为7:3;当数据集数据量较少时,如数据集中只有10000条数据,且划分验证集时,训练集与验证集、测试集的比例一般为6:2:2。

当数据集中数据量较大时,比如数据集中有1000000条数数据,那么可以训练集、验证集与测试集的划分比例可以考虑98:1:1,在这种情况下,也能很好的进行训练与测试。

2 训练集、验证集、测试集的作用

训练集的作用

训练集(Training Dataset)是用来训练模型使用的。训练集是用来学习的样本集,通过拟合一些参数来建立一个分类器,作用是用来训练模型参数,通过设置分类器的参数,训练分类模型。

验证集的作用

当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

验证集是在某个模型的学习过程中用来调试超参数的数据集。因为大多数算法有可配超参数(如神经网络层数、EM类算法的最大迭代数等),所以验证集在机器学习领域也很常见。

从《机器学习》这本书中,我们知道,训练集是拿来训练模型参数的,对于所有的训练集,训练一个epoch之后,我们会用验证集来测试一下模型在上面的性能,由于训练集和验证集的不可交性,所以在验证集上面的结果是有参考意义的。

  1. 验证集并没有参与训练过程梯度下降过程的,狭义上来讲是没有参与模型的参数训练更新的。
  2. 但是广义上来讲,验证集存在的意义确实参与了一个“人工调参”的过程,我们根据每一个epoch训练之后模型在valid data上的表现来决定是否需要训练进行early stop,或者根据这个过程模型的性能变化来调整模型的超参数,如学习率,batchsize等等。

验证集有2个主要的作用:
1. 评估模型效果,为了调整超参数而服务
2. 调整超参数,使得模型在验证集上的效果最好

说明:

  1. 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
  2. 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。

测试集的作用

当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。

训练集就是用来训练参数的,说准确点,一般是用来梯度下降的。而验证集基本是在每个epoch完成后,用来测试一下当前模型的准确率,然后调整超参数。因为验证集跟训练集没有交集,因此这个准确率是可靠的。那么为啥还需要一个测试集呢?

这就需要区分一下模型的各种参数了。事实上,对于一个模型来说,其参数可以分为普通参数和超参数。在不引入强化学习的前提下,那么普通参数就是可以被梯度下降所更新的,也就是训练集所更新的参数。
另外,还有超参数的概念,比如网络层数、网络节点数、迭代次数、学习率等等,这些参数不在梯度下降的更新范围内。尽管现在已经有一些算法可以用来搜索模型的超参数,但多数情况下我们还是自己人工根据验证集来调。

那么就很明显了,我们还需要一个完全没有经过训练的集合,那就是测试集,我们既不用测试集梯度下降,也不用它来控制超参数,只是在模型最终训练完成后,用来测试一下最后准确率,确定模型的泛化能力强弱。

参考链接: