关于训练集、验证集、测试集的划分

前言

在使用数据集训练模型之前,我们需要先将整个数据集分为训练集、验证集、测试集。训练集是用来训练模型的,通过尝试不同的方法和思路使用训练集来训练不同的模型,再通过验证集使用交叉验证来挑选最优的模型,通过不断的迭代来改善模型在验证集上的性能,最后再通过测试集来评估模型的性能。如果数据集划分的好,可以提高模型的应用速度。如果划分的不好则会大大影响模型的应用的部署,甚至可能会使得我们之后所做的工作功亏一篑。本文讨论如何通过数据集分布和数据集大小两个方面来划分数据集,文章中主要的内容来自于deeplearnl ai教程。

数据集分布

我们现在有8个不同区域的数据,需要通过这些数据来训练一个分类模型,那么我们应该如何来利用这些数据集来划分训练集、验证集和测试集?

我们可以从8个不同区域中随机选4个区域来组成训练集,然后再选择剩下的4个区域来组成测试集。其实这种划分的方式存在一个问题,那就是训练集和测试集的数据分布可能不相同,那么必定会导致一个问题,模型在训练集上的表现会非常的好,而在测试集上表现可能不会那么理想。通过训练数据来训练模型,就是希望模型能够从训练集中学习到数据的分布,如果训练集和测试集数据不在同一个分布中,那么模型在测试集上的表现肯定是不会理想的。所以最佳的划分方式应该是:先将这8个不同区域的数据都打乱混合在一起,然后再将数据集分为训练集、验证集和测试集,这样就能保证它们都处于同一分布中。

为什么需要保证训练集和测试集在同一分布中?

在这里插入图片描述

我们将训练出来的模型理解成为一个寻找靶心的过程,通过训练集不同的训练,然后调整超参和使用不同的算法来提高模型性能的过程理解为想靶心逼近的过程。如果想要在测试集也要像有训练集上的表现,那么测试集的靶心也需要和训练集的靶心位于同一位置。如果测试集的靶心相对训练集的靶心有所移动,那么模型在训练集上的表现是10环的话,在测试集上的表现可能就只有8环、9环甚至更低。这个例子中的靶心分布就是数据集的数据分布。

数据集的大小

除了数据的分布对于数据集的划分有影响之外,数据集的大小也对于数据集划分也有影响。不同规模的数据集可能训练集、验证集、测试集的划分会有所不同。

小规模数据集数据的划分

在传统的机器学习中,我们听过70%/30%的划分原则,就是指将整个数据集中的70%用于模型的训练也就是训练集,整个数据集中的30%用于模型的测试也就是测试集,其实这里的测试集被称为验证集或者开发集会更适合。如果想要加入验证集,可能划分标准就改成了60%/20%/20%,也就是指将整个数据集的60%划分为训练集,20%划分为验证集,20%划分为验证集。以上的两种划分标准只适用于小规模的数据集,如果对于上百万、甚至上千万规模的数据集可能需要修改数据集的划分原则。

大规模数据集数据的划分

我们现在所处的是大数据时代,所以很多数据集的数据规模都是上百万甚至上亿,而且如果想要获取一个好的模型是离不开大数据的。面对这种大规模的数据集时,传统的数据划分原则已经不适用了,验证集和测试集的划分可以低于30%和20%。对于百万级别的数据集,我们可以采用98%/1%/1%的规则来划分数据集。

建议

在有些数据集的划分中,没有真正的测试集,也就是只有训练集和测试集。利用训练集来训练模型,然后通过测试模型在测试集上的表现来调整超参和采用不同的策略来提高模型在测试集上的表现,而没有真正的测试集来评估模型的性能,缺少真正的测试集可能会导致模型过拟合,使用这种方式在测试集上所获取的模型评估是不可靠的。建议不要省略验证集,利用验证集来调整模型,利用测试集来评估模型的指标。如果模型上线的指标要求比较高时,可以适当的加大测试集的数量以此来获取更高精度的评估指标,建议不要超过30%。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中,划分数据集训练集验证集测试集是为了评估和优化模型的性能。这个划分过程通常遵循以下几个步骤: 1.首先,从原始数据集中随机选择一部分数据作为训练集训练集是用来训练模型的主要数据集,模型通过学习训练集中的模式和规律来进行预测。 2.其次,从剩下的数据中选择一部分作为验证集验证集用于调节模型的超参数和进行模型选择,以提高模型的性能。通过在验证集上评估不同超参数或模型结构的性能,可以选择最佳的模型。 3.最后,剩下的数据作为测试集测试集是用来评估最终训练好的模型的性能。模型在测试集上的表现可以反映其泛化能力,即对新数据的预测能力。测试集的结果可以提供对模型在实际应用中的性能预估。 划分训练集验证集测试集的比例没有固定的规定,可以根据具体的任务和数据集大小来确定。常见的做法是将数据集划分为大约70-80%的训练集,10-15%的验证集和10-15%的测试集。这样的划分可以保证模型具有较好的性能评估和泛化能力。 引用: 在机器学习中,经常提到训练集测试集验证集似有似无。感觉挺好奇的,就仔细查找了文献。以下谈谈训练集验证集测试集。 整个测试集往往就是为了在验证集只是非训练集一个小子集的情况下,好奇一下那个靠训练集训练)和验证集(调参)多次接力训练出来的模型是不是具有了泛化性能,因而加试一下图个确定。 测试集:对于训练完成的神经网络,测试集用于客观的评价神经网络的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值