机器学习中的训练集、验证集、测试集;交叉验证方法

@创建于:20210826
@修改于:20210826

1、数据集类型

数据是人工智能的基础,可以对其进行划分,以达到模型构建与训练的目的。本文介绍3种数据集:训练集、验证集、测试集。

训练集用于训练模型,验证集用于模型的参数选择配置,测试集对于模型来说是未知数据,用于评估模型的泛化能力。

在这里插入图片描述
用一个抽象的比喻来说明3种数据集之间的关系:

训练集相当于上课学知识
验证集相当于课后的的练习题,用来纠正和强化学到的知识
测试集相当于期末考试,用来最终评估学习效果

在这里插入图片描述

1.1 训练集

训练集(Training Dataset)是用来训练模型使用的,在训练阶段使用。
在这里插入图片描述

1.2 验证集

当模型训练好之后,并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。
在这里插入图片描述
验证集有2个主要的作用:

评估模型效果,为了调整超参数而服务
调整超参数,使得模型在验证集上的效果最好

说明:

  • 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
  • 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。

1.3 测试集

调好超参数后,就要开始「最终考试」了。通过测试集(Test Dataset)来做最终的评估。评估的标准是评价方法。
在这里插入图片描述

1.4 验证集/测试集区别

在这里插入图片描述

2、四种交叉验证方法

交叉验证法的基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。

为什么用交叉验证法?

交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表,可以在一定程度上减小过拟合。
还可以从有限的数据中获取尽可能多的有效信息。
可以选择出合适的模型

主要有哪些方法?

Holdout Method
K-Fold CV
Leave One out CV
Bootstrap Methods

2.1 留出法 (holdout cross validation)

在这里插入图片描述
这种方法是最简单的交叉验证:
在机器学习任务中,拿到数据后,我们首先会将原始数据集分为三部分:训练集、验证集和测试集。

训练集用于训练模型,验证集用于模型的参数选择配置,测试集对于模型来说是未知数据,用于评估模型的泛化能力。

不过如果只做一次分割,它对训练集、验证集和测试集的样本数比例,还有分割后数据的分布是否和原始数据集的分布相同等因素比较敏感, 不同的划分会得到不同的最优模型, 而且分成三个集合后,用于训练的数据更少了。

2.2 k 折交叉验证(k-fold cross validation)

k 折交叉验证通过对 k 个不同分组训练的结果进行平均来减少方差, 因此模型的性能对数据的划分就不那么敏感。

  • 第一步,不重复抽样将原始数据随机分为 k 份。
  • 第二步,每一次挑选其中 1 份作为测试集,剩余 k-1 份作为训练集用于模型训练。
  • 第三步,重复第二步 k 次,这样每个子集都有一次机会作为测试集,其余机会作为训练集。
    • 在每个训练集上训练后得到一个模型,
    • 用这个模型在相应的测试集上测试,计算并保存模型的评估指标,
  • 第四步,计算 k 组测试结果的平均值作为模型精度的估计,并作为当前 k 折交叉验证下模型的性能指标。

k 一般取 10, 数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。 数据量大的时候,k 可以设小一点。

在这里插入图片描述

2.3 留一法(Leave one out cross validation)

当 k=m 即样本总数时,叫做 ** 留一法(Leave one out cross validation)**, 每次的测试集都只有一个样本,要进行 m 次训练和预测。

这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。 但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。 一般在数据缺乏时使用。 样本数很多的话,这种方法开销很大。
在这里插入图片描述

此外:

(1)多次 k 折交叉验证再求均值,例如:10 次 10 折交叉验证,以求更精确一点。
(2)划分时有多种方法,例如对非平衡数据可以用分层采样,就是在每一份子集中都保持和原始数据集相同的类别比例。
(3)模型训练过程的所有步骤,包括模型选择,特征选择等都是在单个折叠 fold 中独立执行的。

2.4 Bootstrap

还有一种比较特殊的交叉验证方式,Bootstrapping: 通过自助采样法, 即在含有 m 个样本的数据集中,进行 m 次有放回地随机抽样,组成的新数据集作为训练集。随机森林用到了该方法。

这种方法,有的样本会被多次采样,也会有一次都没有被选择过的样本,原数据集中大概有 36.8% 的样本不会出现在新组数据集中,这些没有被选择过的数据作为验证集。

在这里插入图片描述

  • 优点是训练集的样本总数和原数据集一样都是 m,并且仍有约 1/3 的数据不被训练而可以作为测试集,对于样本数少的数据集,就不用再由于拆分得更小而影响模型的效果。
  • 缺点是这样产生的训练集的数据分布和原数据集的不一样了,会引入估计偏差。

3、参考资料

  • 6
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值