1.交叉验证
交叉验证是一种评估统计分析、机器学习算法对独立于训练数据的数据集的泛化能力(generalize)。
2.训练集,验证集(注意区别交叉验证数据集),测试集
一般做预测分析时,会将数据分为两大部分。一部分是训练数据,用于构建模型,一部分是测试数据,用于检验模型。但是,有时候模型的构建过程中也需要检验模型,辅助模型构建,所以会将训练数据在分为两个部分:1)训练数据;2)验证数据(Validation Data)。验证数据用于负责模型的构建。典型的例子是用K-Fold Cross Validation裁剪决策树,求出最优叶节点数,防止过渡拟合(Overfitting)。
所以:
训练数据(Test Data):用于模型构建
验证数据(Validation Data):可选,用于辅助模型构建,可以重复使用。
测试数据(Test Data):用于检测模型构建,此数据只在模型检验时使用,用于评估模型的准确率。绝对不允许用于模型构建过程,否则会导致过渡拟合。
验证集用于进一步网络调参, 而测试集只是用于评估模型的精确度。
3.K次交叉检验(K-Fold Cross Validation)
K次交叉检验的大致思想是将数据大致分为K个子样本,每次取一个样本作为验证数据,取余下的K-1个样本作为训练数据。模型构建后作用于验证数据上,计算出当前错误率。重复K次,将K次错误率平均,得到一个总体的错误率。可以通过整体错误率,估计当前整体数据用于建模的错误率。
举个例子,K = 10(常见情况),求出总体错误率为8.7%。那么将当前的所有数据全部作为训练数据,得到的模型的错误率90%的可能在9.7%左右。
验证机与测试集的区别
验证数据集(validation dataset)是模型训练过程中留出的样本集,它可以用于调整模型的超参数和评估模型的能力。但测试数据集(test dataset)不同,虽然同是模型训练过程中留出的样本集,但它是用于评估最终模型的性能,帮助对比多个最终模型并做出选择。
很可能你再也不会在应用机器学习中看到训练数据集、验证数据集和测试数据集。
当实践者选择在训练数据集中使用 k-折交叉验证方法调整模型超参数时,「验证集」的概念就已经淡化了。
http://www.infosec-wiki.com/?p=309393
https://machinelearningmastery.com/difference-test-validation-datasets/