训练集,测试集,检验集的区别与交叉检验

训练集,测试集,检验集的区别与交叉检验

最近在看机器学习的东西发现验证集的(Validation set) 有时候被提起到,以时间没明白验证集的真正用途。

首先,这三个名词在机器学习领域的文章中是很常见的,以下是这三个词的定义。 

Training set: A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier. 

Validation set: A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network. 

Test set: A set of examples used only to assess the performance [generalization] of a fully specified classifier. 

训练集:学习样本数据集,通过匹配一些参数来建立一个分类器。建立一种分类的方式,主要是用来训练模型的。

验证集:对学习出来的模型,调整分类器的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。

测试集:主要是测试训练好的模型的分辨能力(识别率等)

显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。 

交叉检验(Cross Validation)

  在实际应用中,因为数据集的数量限制,常常采用交叉检验作为检验手段1,其中k折交叉检验(k-folds cross validation)最为常用,其中k=10k=10最为常见。其方法十分简单,就是将训练集(大类)均分为KK份,然后分别取出其中的第ii个作为检验集,其余的i1i−1作为训练集训练,然后再检验集上检验。进行了KK次该操作之后,采用平均值作为最终的交叉验证误差(CV Error),用于选择模型。 

CVError=1Ki=1KLiCVError=1K∑i=1KLi

其中LiLi是第ii检验集的平均误差 
Li=1mj=1m(yj^yj)2,mi
训练集,测试集,检验集的区别与交叉检验