一、机器学习数据集
Training Set, Test Set and Validation Set
在机器学习中我们大家一定都接触过这三个数据集
训练集 (训练阶段)
用于构建我们的模型,我们的模型在训练集上进行学习,通常在这个阶段我们可以有多种方法进行训练
验证集 (模型挑选阶段)
用于挑选最优模型超参的样本集合:使用验证集可以得到反向传播什么时候结束以及超参怎么设置最合理。主要目的是为了挑选在验证集上表现最好的模型。
测试集 (验证阶段 评估泛化误差)
在我们挑选好验证集上表现最好的模型之后,用于评估该模型泛化能力的数据集。但不能作为调参、选择特征等算法相关的选择的依据。测试集的作用是体现在测试的过程。
一般来说,上述三个数据集的比例为60/20/20.
参考:
验证集合和训练集
二、交叉验证(cross validation)
当给定样本数据充足,进行模型选择的方法一般为:
随机将数据集划分为三部分,分别为:训练集,验证集,测试集。我们用训练集数据来训练模型,用验证集数据来选择模型,用测试集数据最终对学习方法进行评估。一般来说,我们选择对验证集有最小预测误差的模型,由于验证集有足够多的数据,因此对模型进行选择也是有效的。但由于许多实际应用中,数据本身不充足,为了选择好的模型,我们需要用到交叉验证:即重复使用数据,把给定数据进行切分,将切分数据集组合为训练集与测试集,在此基础上反复进行训练,测试已经模型选择。
2.1 简单交叉验证
1.随机将数据分为两个部分:训练集(70%)+测试集(30%)
2.然后用训练集在各种条件下(比如不同参数个数)训练模型,从而得到不同模型
3.在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
优点:与k倍交叉验证相比,这种方法的与k无关。
缺点:有些数据可能从未做过训练或测试数据;而有些数据不止一次选为训练或测试数据。
2.2 K倍交叉验证/ S折交叉验证
K倍交叉验证(K>=2)。将样本数据集随机划分为K个子集(一般是均分),将一个子集数据作为测试集,其余的K-1组子集作为训练集;将K个子集轮流作为测试集,重复上述过程,这样得到了K个分类器或模型,并利用测试集得到了K个分类器或模型的分类准确率。用K个分类准确率的平均值作为分类器或模型的性能指标。10-倍交叉证实是比较常用的。
优点:每一个样本数据都即被用作训练数据,也被用作测试数据。避免的过度学习和欠学习状态的发生,得到的结果比较具有说服力。
2.3 留一交叉验证
S折交叉验证的特殊情形就是S=N,,称为留一交叉验证(leave-one-out cross validation),在数据比较缺乏的情况下使用,N恰好为给定数据集的容量)