训练集,测试集和验证集

本文介绍了机器学习中的训练集、验证集和测试集的区别及其应用场景。训练集用于模型训练,测试集用于评估模型性能,防止数据窥探偏误。验证集则在模型训练过程中用于调整超参数,避免过拟合。通常,数据集划分比例为训练集:验证集:测试集=6:2:2,以确保模型的泛化能力。
摘要由CSDN通过智能技术生成

Training Set,  Test Set and Validation Set

在机器学习中我们大家一定都接触过这三个数据集,那他们有什么区别,又分别应用于什么场景呢,接下来发表一下我个人的观点。


训练集与测试集

刚接触机器学习的小伙伴肯定是最早使用的是训练集和测试集,训练集测试集加模型可以构成一个很初级的机器学习项目,那他们使用来干什么的呢。

训练集,顾名思义它是用来训练模型的,为了减少泛化误差,我们需要通过训练集不断的训练来使得我们的模型能够更好的接近真实数据。

测试集,用来测试模型的准确性,我们将测试集应用于训练集训练好的模型,会得到一个模型的得分,例如混淆矩阵(Consufion Matrix),recall,f1等得分。

这里有几个点需要注意

  • 一般我们划分训练集和测试集的比例是8:2
  • 为了防止数据窥探偏误和数据污染,我们需要去保证训练集和测试集的数据纯洁性,也就是在工作流程中,我们不能使用在测试数据集上计算的得到的任何结果。我们在训练时需要把测试集当成完全不存在的数据。

验证集

当小伙伴更加进一步了解机器学习后,他们会发现还有一个叫验证集的东西,听起来和测试集差不多,就会有很多小伙伴很困惑,这里我来简单介绍下我的看法。

我们知道我们在搭建一个模型之前会对模型的一些参数进行设置,我们称之为超参数(HyperParameter)例如神经网络的层数和每层的节点数,随机森林的决策树树量等,这些参数也会极大的影响我们的模型得分,有专门的算法可以用来调整这些超参数,例如网格搜索、随机搜索,贝叶斯优化等这些我们以后再提。

我们知道模型会通过训练集的loss function,使用梯度下降来调节模型的参数,而超参数一旦确定要想更改就几乎等于重新训练一个模型,验证集的其中一个作用就是,调节超参数使得模型泛化能力最强,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。


验证集与测试集

验证集(validation set): 查看模型训练的效果是否朝着坏的方向进行。验证集的作用是体现在训练的过程。举个栗子:通过查看训练集和验证集的损失值随着epoch的变化关系可以看出模型是否过拟合,如果是可以及时停止训练,然后根据情况调整模型结构和超参数,大大节省时间。

测试集(test set): 用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。测试集的作用是体现在测试的过程。

对原始数据进行三个数据集的划分,也是为了防止模型过拟合。当使用了所有的原始数据去训练模型,得到的结果很可能是该模型最大程度地拟合了原始数据,亦即该模型是为了拟合所有原始数据而存在。当新的样本出现,再使用该模型进行预测,效果可能还不如只使用一部分数据训练的模型。

一般我们划分数据集比例是训练集:验证集:测试集 = 6:2:2

当数据集很大时也可以训练集:验证集:测试集 = 98:1:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Weber77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值