【深度学习】训练集、开发集和测试集

这三者是在进行一个机器学习项目中非常重要的内容。它们的确定往往决定了这个项目的走向。错误的训练集、开发集和测试集的划分很可能会让一个团队浪费数月时间。

training set:顾名思义,是用来训练模型的。因此它占了所有数据的绝大部分。

development set:用来对训练集训练出来的模型进行测试,通过测试结果来不断地优化模型。

test set:在训练结束后对训练出的模型进行一次最终的评估所用的数据集。

它们的划分非常简单,一句话说就是要保持它们每一个数据集的分布是相同的。三者都指向同一目标,就可以正常地用来训练测试。如果他们指向的分布都是不同的,可能就是一场灾难。

至于划分的比例呢? 
在以前的机器学习任务中,数据量还不是这么大的时候,上百条数据,我们可以根据训练集测试集7:3或者8:2来划分。训练集:开发集:测试集6:2:2这样划分。 
而如今深度学习中几十万上百万的数据,训练集:开发集:测试集98:1:1这样也是足够了。如果要是一百万条数据的话,1%就是1万条,足以用来测试模型。

以上凡是只说了训练集和测试集时,其实是用训练集来训练,测试集起到的是开发集的作用。因此严格意义上来讲应该是训练集和开发集的比例,而不包含测试集。
--------------------- 
作者:加勒比海鲜王 
来源:CSDN 
原文:https://blog.csdn.net/yinruiyang94/article/details/78025469 
版权声明:本文为博主原创文章,转载请附上博文链接!


如何将只有一个包含m个样例的数据集D,产生出训练集S和测试集T?
留出法(hold-out)
交叉验证法(cross validation)
自助法(bootstrapping)
自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。

有人会考虑既然将数据集D,分为训练集S和测试集T,那么验证集又是什么呢?
测试集(testing set)来测试学习器对新样本的判别能力,然后以测试误差(testing error)作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现,未中训练过程中使用过。

测试集只是用于测试学习器(即学得模型)的泛化能力。而如何选择学习器呢?

在训练集中,事实上我们只使用了一部分数据训练模型,在模型评估与选择过程中需要留出一部分数据进行评估测试。为了和测试集加以区分,模型评估与选择中用于评估测试的数据集常称为验证集(validation set)。

在研究对比不同算法的泛化性能时,我们用测试集的判别效果来估计模型中实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
--------------------- 
作者:chen0_0 
来源:CSDN 
原文:https://blog.csdn.net/Chen0_0/article/details/78510729 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(深度学习)