模型选择评估方法

目录:

  • 留出法(hold-out)
  • 交叉验证法(cross validation)
  • 留一法(Leave-One-Out,LOO)
  • 自助法(bootstrapping)
  • 总结

前提:

总数据集D,数据集大小为n;

训练集S;

测试集T。 

1、留出法(hold-out)

直接将数据集D分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,即$D=S \cup T,S \cap T= \varnothing $,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。

需要注意:

  • 训练集和测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响

  实际上,实验中无法保证数据划分时可以保持分布的一致性,什么叫划分时保证了分布的一致性呢?如图所示,假设总数据集的分布如下图所示:

  如果数据采样得到的是红点,则采样保持了数据分布的一致性(采样数据保持了原始数据的分布),如果采样数据是绿点,那么就没有保持原始数据的分布,我们当然希望抽样时能抽到红点类似的分布,但即使是随机抽样,也是有可能不幸的抽到绿点类似的分布。

  一般的解决办法是进行若干次的随机划分,重复进行实验评估后取平均值作为留出法的评估结果(概率上而言不大可能100次都抽到绿点类似的分布,抽到红点类似分布才是常规情况)。

  • 划分时样本的顺序不同,也会得到不一样的结果

  如果划分的结果是前多少个数据(S)和后多少个数据(T),或者是其他的某种划分方式,实验后得到的评估结果也会不一样。

   所以一般会对数据集打乱顺序再进行采样。

  • 如何确定训练集和测试集的大小呢?训练集 / 测试集窘境

  我们希望评估的是用D训练出的模型的性能,但留出法需要一部分数据作为测试数据,不进行模型的训练,这样的话,就出现了训练集 / 测试集窘境:

    • 若令S很大,则训练的模型更加接近D训练的模型,但是此时T比较小,评估结果可能不够稳定准确;
    • 若令T较大,虽说评估结果更稳定了,但是训练出来的模型和D训练的模型的差别就变大了;

2、交叉验证法(cross validation)

 交叉验证法将数据集分成K个互斥的大小相似的子集,每个子集$D_i$尽可能保证数据的一致性(可以通过分层抽样得到);然后每次用K-1个子集作为训练集,剩下的作为测试集;这样就可以得到K组训练集 / 测试集了,从而可以进行K次训练和测试,得到K个模型和评估结果,最终的结果是这K个评估结果的均值。

根据K的不同,称为K折交叉验证,最常用的K是10,另外还有5和20也比较常用。以下为10折交叉验证的示意图:

交叉验证法中抽取了K个大小相似的数据分布接近的互斥数据集,这样就尽可能的规避了在留出法中依赖数据划分的问题

3、留一法(Leave-One-Out,LOO)

留一法是交叉验证的一种极端的情况,每次只留一个数据作为测试,用n-1(n为总的数据集的数目)个数据作为训练集,训练n次,得到n个模型和评估结果,最终结果是这n和结果的均值。

  • 留一法中实际被评估的模型(S(n-1个数据)训练出来的模型)和期望被评估的模型(D训练出来的模型)非常的接近(因为只少了一个数据),因此,留一法的结果往往被认为比较准确
  • 留一法在训练数据集比较大时,计算的开销是非常大的(比如100万个数据,就要训练100万个模型(未考虑调参时))
  • 留一法的估计结果也未必永远比其他评估方法准确(根据没有免费的午餐定理)

注:

没有免费的午餐定理:所有的算法的性能的期望都是一样的!

4、自助法(bootstrapping)

在留出法和交叉验证法中,留出了一部分数据做测试集,不参与训练,这样实际评估模型所使用的数据集比D小,这样必然会引入因训练样本规模不同造成的估计偏差,留一法虽然受训练样本规模的影响小,但是计算成本太大。

自助法以自助采样法为基础:从D中有放回的抽取n次样本,得到D'(D'中n个样本有重复),可以证明,D中有大约36.8%的样本没有出现在D'中,用D'作为训练集,D-D'作为测试集,这样既有n个训练集,规避了训练数据集规模不同造成的误差,又有不同与训练数据的数据作为测试集。

  • 自助法在数据量小,难以有效的划分训练 / 测试集时很有用
  • 自助法能从初始数据集中产生多个不同的数据集,这对集成学习等方法有很大的好处
  • 自助法改变了原始数据集的分布,这会引入估计偏差,因此,在数据量足够大时,留出法和交叉验证法更常用

5、总结

  • 如何抉择交叉验证法和留出法?

  交叉验证法无疑比留出法更加的耗时,在数据量比较大的时候,一般而言,留出法就足够了,不需要用交叉验证法,但是数据量的大小如何去评估也是个问题。一般而言,我们可以将交叉验证法和留出法得到的结果进行比对,如果它们的值差别不大,那就没有必要用交叉验证了,直接用留出法就好了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

技术 | 变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作

作者 | Professor ho CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量...

2965
来自专栏琦小虾的Binary

学习July博文总结——支持向量机(SVM)的深入理解(上)

前言 本文是参照CSDN的July大神的热门博文《支持向量机通俗导论(理解SVM的三层境界》)写的。目的是因为July大神文中说,SVM理论的理解,需要一遍一遍...

3618
来自专栏marsggbo

(转载) 浅谈高斯过程回归

  在训练集中,我们有3个点 x_1, x_2, x_3,   以及这3个点对应的结果,f1,f2,f3. (如图) 这三个返回值可以有噪声,也可以没有。我们先...

1771
来自专栏SIGAI学习与实践平台

流形学习概述

在很多应用中,数据的维数会很高。以图像数据为例,我们要识别32x32的手写数字图像,如果将像素按行或者列拼接起来形成向量,这个向量的维数是1024。高维的数据不...

1324
来自专栏大数据文摘

小白学数据:教你用Python实现简单监督学习算法

1824
来自专栏WD学习记录

机器学习 学习笔记(21)深度学习中的正则化

在机器学习中,许多策略被显式的设计来减少测试误差(可能会以增大训练误差为代价)。这些策略统称为正则化。

2642
来自专栏AI研习社

YOLO9000好棒好快好强壮 阅读笔记

论文(YOLO9000:Better,Faster,Stronger)阅读笔记,由于论文较新,所以文中的很多词汇并没有对应的中文官方叫法,因此会保留一部分英文。...

43210
来自专栏AI研习社

神经风格迁移指南(第一部分)

在本系列中,我们会从神经风格的基础开始,你将从中学到一种自下而上(从基础开始)的方法。对于初学者而言,我们将会详细讲解神经风格到底是什么,以及它的工作原理。本文...

782
来自专栏CreateAMind

如何理解深度学习中的deconvolution networks?

谭旭 https://www.zhihu.com/question/43609045/answer/132235276

1691
来自专栏PPV课数据科学社区

机器学习测试题(上)

人工智能一直助力着科技发展,新兴的机器学习正推动着各领域的进步。如今,机器学习的方法已经无处不在—从手机上的语音助手到商业网站的推荐系统,机器学习正以不容忽视...

32912

扫码关注云+社区