模型选择评估方法

目录:

  • 留出法(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 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

卷积神经网络处理自然语言

当我们听到卷积神经网络(Convolutional Neural Network, CNNs)时,往往会联想到计算机视觉。CNNs在图像分类领域做出了巨大贡献,...

1896
来自专栏机器之心

学界 | 谷歌大脑提出自动数据增强方法AutoAugment:可迁移至不同数据集

2109
来自专栏AI研习社

视频 | 硅谷深度学习网红传授超参数优化宝典

AI 研习社按:今天为大家带来硅谷深度学习网红 Siraj 在人工智能在线大会 AI WITH THE BEST(AIWTB)上的演讲,雷锋字幕组独家译制。本次...

3405
来自专栏机器之心

入门 | 单样本学习:使用孪生神经网络进行人脸识别

3539
来自专栏机器之心

你是合格的机器学习数据科学家吗?来挑战这40题吧!(附解答)

选自 Analytics Vidhya 作者:ANKIT GUPTA 机器之心编译 参与:机器之心编辑部 目前机器学习是最抢手的技能之一。如果你是一名数据科学...

3539
来自专栏人工智能头条

卷积神经网络在自然语言处理的应用

1481
来自专栏https://www.cnblogs.com/L

【深度学习篇】--神经网络中的卷积神经网络

Convolutional neural networks  视觉皮层、感受野,一些神经元看线,一些神经元看线的方向,一些神经元有更大的感受野,组合 底层的图案...

551
来自专栏数据科学学习手札

(数据科学学习手札34)多层感知机原理详解&Python与R实现

  机器学习分为很多个领域,其中的连接主义指的就是以神经元(neuron)为基本结构的各式各样的神经网络,规范的定义是:由具有适应性的简单单元组成的广泛并行互连...

5159
来自专栏程序生活

CS224n 笔记2-词向量表示:Word2vec1. 单词含义的表示2. Word2Vec的主要思路3. 更多Word2Vec细节4 .梯度的推导5. 损失/目标函数相关推荐阅读

1. 单词含义的表示 我们如何表示一个单词的意思 下面是意思的定义: 用词语,语句表示的想法或观点 人们使用词汇,符号来表达的想法 在一篇文章和艺术品表达的观点...

4008
来自专栏机器学习算法全栈工程师

机器学习从零开始系列连载(1)——基本概念

作者:张 磊 编辑:赵一帆 本周内容: 1. 一些基本概念 1.1 生成式模型与判别式模型 1.2 参数学习与非参学习 1....

3354

扫码关注云+社区