在机器学习的监督学习中,经常提到训练集合测试集,验证集似有似无。今天无意间看到一篇博客,提到了验证集,感觉挺好奇的,就仔细查找了文献。以下谈谈训练集、验证集和测试集的区别。
在监督学习中,首先需要一个训练集,这个训练集是有标记的数据,用于训练一个最佳的模型。训练集中的数据需要使用均匀随机抽样的方式从样本集中选取数据。而验证集合测试集都是为了检测得到的模型是不是够好而创建的,这两个数据集也需要数据均匀分布,并且最好与训练集中的数据没有交集,另外这三个数据集应该是独立同分布的。
当确定使用什么模型进行训练之后,就可以使用训练集进行训练了,当训练完成之后,就需要使用验证集验证模型的准确率。就拿线性回归来说,训练过程中要不断的使用梯度下降算法,每次得到一个确定的中间模型就需要使用验证集验证一次模型的准确率。
既然说,验证集已经可以验证模型的准确率了,那么测试集又可以发挥什么作用呢?在机器学习中,有一些算法中的参数在训练过程中是无法体现的,也就是说不能由验证集的验证过程直接反映出模型是否合适,还需要后续的验证,这时候就需要使用测试集。
再说仔细点就是,在构建模型的过程中,参数可以分为两类,一类是普通参数、一类是超参数。普通参数就是上面那种可以在训练过程中不断更新的,而超参数是人为引入的,存在一定的人为因素,在训练过程启动之后就不能改变的参数。比如:神经网络中的网络层数、迭代次数和学习率等。