在机器学习中,最佳的数据分类情况是把数据集分为三部分,分别为:训练集(train set),验证集(validation set)和测试集(test set)。
训练集很好理解就是训练我们的模型。那么验证集和测试集有什么作用?
首先需要了解的是在一个机器学习模型中,模型的参数分为普通参数和超参数,普通参数比如神经网络的权重矩阵等等,是可以被训练集所训练出来的(也就是梯度下降算法求出)。超参数比如网络的层数、网络结点数、学习速率等,这些参数不在梯度下降算法的更新范围内,需要使用验证集来调参。
那也就是说,从狭义来讲,验证集没有参与梯度下降的过程,也就是说是没有经过训练的;但从广义上来看,验证集却参与了一个“人工调参”的过程,我们根据验证集的结果调节了迭代数、调节了学习率等等,使得结果在验证集上最优。因此,我们也可以认为,验证集也参与了训练。那么就很明显了,我们还需要一个完全没有经过训练的集合,那就是测试集,我们既不用测试集梯度下降,也不用它来控制超参数,只是在模型最终训练完成后,用来测试一下最后准确率,以看看我们训练出来的模型的泛化能力怎么样。