机器学习数据集划分 训练集 验证集 测试集

xiaoxiao2021-03-01  30

版权声明:本文为博主原创文章,转载请注明转自 Scofield's blog[http://blog.csdn.net/scotfield_msn] https://blog.csdn.net/Scotfield_msn/article/details/69945350

机器学习数据挖掘之数据集划分: 训练集 验证集 测试集

 

Q:将数据集划分为测试数据集和训练数据集的常用套路是什么呢? A:three ways shown as follow:1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数: 默认是把数据集的75%作为训练集,把数据集的25%作为测试集。2.交叉验证(一般取十折交叉验证:10-fold cross validation) k个子集,每个子集均做一次测试集,其余的作为训练集。 交叉验证重复k次,每次选择一个子集作为测试集,并将k次的平均交叉验证识别正确率作为结果。3.训练数据,验证数据(注意区别交叉验证数据集),测试数据(在Coursera上提到) 一般做预测分析时,会将数据分为两大部分。一部分是训练数据,用于构建模型,一部分是测试数据,用于检验模型。但是,有时候模型的构建过程中也需要检验模型,辅助模型构建,所以会将训练数据在分为两个部分:1)训练数据;2)验证数据(Validation Data)。验证数据用于负责模型的构建。典型的例子是用K-Fold Cross Validation裁剪决策树,求出最优叶节点数,防止过渡拟合(Overfitting)。 所以: 训练数据(Test Data):用于模型构建 验证数据(Validation Data):可选,用于辅助模型构建,可以重复使用。 测试数据(Test Data):用于检测模型构建,此数据只在模型检验时使用,用于评估模型的准确率。绝对不允许用于模型构建过程,否则会导致过渡拟合。

 

版权声明:转载请注明出处 https://blog.csdn.net/JNingWei/article/details/78170171

区别

类别验证集测试集是否被训练到否否作用纯粹用于调超参数纯粹为了加试以验证泛化性能使用次数多次使用,以不断调参仅仅一次使用缺陷模型在一次次重新手动调参并继续训练后所逼近的验证集,可能只代表一部分非训练集,导致最终训练好的模型泛化性能不够测试集为了具有泛化代表性,往往数据量比较大,测试一轮要很久,所以往往只取测试集的其中一小部分作为训练过程中的验证集互相转化验证集具有足够泛化性(一般来说,如果验证集足够大到包括大部分非训练集时,也等于具有足够泛化性了)验证集具有足够泛化性时,测试集就没有存在的必要了类比校内答辩(如果校内答辩比多校联合答辩还有泛化性说服力,那么就没有必要再搞个多校联合答辩了)多校联合公开答辩

附言

说到底:

验证集是一定需要的;如果验证集具有足够泛化代表性,是不需要再整出什么测试集的;整个测试集往往就是为了在验证集只是非训练集一个小子集的情况下,好奇一下那个靠训练集(训练)和验证集(调参)多次接力训练出来的模型是不是具有了泛化性能,因而加试一下图个确定。

references http://www.cnblogs.com/bourneli/archive/2013/03/11/2954060.html http://blog.csdn.net/lhx878619717/article/details/49079785 http://blog.csdn.net/chloezhao/article/details/53502674 https://segmentfault.com/q/1010000005917400

转载请注明原文地址: https://www.6miu.com/read-3450063.html

最新回复(0)