0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析训练集的过度拟合与欠拟合

nlfO_thejiangme 2018-02-07 17:00 次阅读

在正式讲这两个概念之前我们先来看一个故事:假设你想要习英语但之前对英语一无所知,不过曾听说过莎士比亚是一个位伟大的英国作家。你想要学英语的话,当然是将自己泡在一个图书馆中,背诵他的相关作品,用他的作品学习英语。一年的学习结束后,你走出图书馆,来到了纽约,并向你看到的第一个人打了声招呼:“嗨,愿光明与你同在!” 那人用奇怪的眼光看着你,嘴里嘟囔着“神经病”。你故作镇定地又试了一遍:“亲爱的夫人,今天是何等的优雅呢?” 你再次收获了失败,还把那个人吓跑了。当你三次尝试都失败后,你心烦意乱的说道:“啊,此乃何等之遗憾,何等之悲伤!”确实很遗憾,因为你犯下了一个建模当中最基础的错误之一:对训练集的过度拟合。

在数据科学学科中, 过度拟合(overfit)模型被解释为一个从训练集(training set)中得到了高方差(variance)和低偏差(bias),导致其在测试数据中得到低泛化(generalization)的模型。为了更好地理解这个复杂的定义,我们试着将它理解为去尝试学习英语的过程。我们要构建的这一模型代表了如何用英语交流。把莎士比亚的所有作品作为训练数据,把在纽约的对话作为测试集(testing set)。如果我们把社会认可程度来衡量这一模型的表现的话,那么事实表明我们的模型将不能够有效推广到测试集上。但是,模型中的方差和偏差又是什么呢?

方差可以理解为为了响应训练集时模型所产生的变化。若我们只是单纯的去记忆训练集,我们的模型将具有高方差:它高度取决于训练集数据。如果我们读的所有作品来自J.K. 罗琳 而不是莎士比亚, 这个模型将变得完全不同。当这样一个具有高方差的模型应用到一个新的测试集上时,这个模型将无法获得很好的表现。因为在没有训练集数据的情况下模型将迷失方向。就好比一个学生只是单纯复习了教科书上列出的问题,但这却无法帮助他解决一些实际的问题。

偏差(bias),作为与方差相对的一个概念,表示了我们基于数据所做出的假设的强度(有效性)。在前文我们尝试学习英语的例子中,我们基于一个没有初始化的模型,并把作家的作品当作学习语言的教科书。低偏差看似是一个正向的东西,因为我们可能会有这样的想法:我们并不需要去带着倾向性思维看待我们的数据。然而我们却需要对数据表达的完整性持怀疑态度。因为任何自然处理流程都会生成噪点,并且我们无法自信地保证我们的训练数据涵盖了所有这些噪点。所以我们在开始学习英语之前需要明白,我们无法通过死记硬背莎士比亚的名著来熟练掌握英语。

总体来说,偏差关系到数据被忽略的程度,而方差则关系到模型和数据的依赖程度。在所有的建模过程中,偏差和方差之间永远存在着一个权衡问题,并且需要我们针对实际情况找到一个最佳的平衡点。偏差和方差这两个概念可应用于任何从简单到复杂的模型算法,对于数据科学家来说,它们至关重要。

刚才我们了解到了过度拟合的模型具有高方差、低偏差的特点。那么相反的情况:一个低方差、高偏差的模型又会是什么样呢?这被称作欠拟合。相较于之前与训练数据紧密贴合的模型,一个欠拟合模型忽视了从训练数据中获得的信息,进而使其无法找到输入和输出数据之间的内在联系。让我们用之前尝试学习英语的例子来解释它,这一次我们试着去对之前我们用到的模型做出一些假设,并且我们改成使用《老友记》全集作为这一次学习英语的训练数据。为了避免我们之前犯过的错误,这次我们提前作出假设:只有那些以最常用的词--the, be, to, of, and, a—为开头的句子才是重要的。当学习的时候,我们不去考虑别的句子,并且我们相信这能够构建更有效的模型。

经过了漫长的训练后,我们又再一次站在了纽约的大街上。这一次,我们的表现相对好了一点点,但是别人依然无法听懂我们,最后,我们还是以失败告终。尽管我们学习到了一些英语知识,并且能够组织一些数量有限的句子,由于从训练数据上造成的高偏差,我们无法从中学到英语的基础结构和语法。虽然这个模型没有受到高方差带来的影响,但是相对于之前的尝试来说,显得又太矫枉过正,拟合不充分!

解析训练集的过度拟合与欠拟合

对数据的过度关注会导致过度拟合,对数据的忽视又会导致欠拟合,那么我们到底该怎么办呢?一定有一个能找到最佳平衡点的办法!值得庆幸的是,在数据科学中,有一个很好的解决方案,叫作“验证(Validation)”。用上面的例子来说,我们只使用了一个训练集和一个测试集。这意味着我们无法在实战前知道我们的模型的好坏。最理想的情况是,我们能够用一个模拟测试集去对模型进行评估,并在真实测试之前对模型进行改进。这个模拟测试集被称作验证集(validation set),是模型研发工作中非常关键的部分。

两次失败的英语学习过后,我们学聪明了,这一次我们决定使用一个测试集。我们这次同时使用Shakespeare的作品和《老友记》,因为我们从过去的经验中认识到越多的数据总是能够改善这个模型。不同的是,在这次训练结束以后,我们不直接走到街上,我们先找到一群朋友,每周和他们相聚,并以用英语来和他们交谈的形式来评估我们的模型。刚开始的第一周,由于我们的英语水平还很差,我们很难融入到对话当中。然而这一切仅仅是被模拟成一个验证集,每当我们意识到错误后,就能够调整我们的模型。最后,当我们能够适应并掌控与朋友们的对话练习时,我们相信已经是准备好面对测试集的时候了。于是,我们再一次大胆的走了出去,这一次我们成功了!我们非常适应在真实的情况下和别人交谈,这得益于一个非常关键的因素:验证集,是它改善并优化了我们的模型。

英语学习只是一个相对简易的例子。在众多真实的数据科学模型中,考虑到在一个验证集上出现过度拟合的可能性,通常会使用到非常多的验证集!这样的解决办法称之为交叉验证(corss-validation),这个方法要求我们将训练集拆分成多个不同的子集,或者在数据足够多的条件下来使用多个验证集。交叉验证法这一个概念涵盖着问题的方方面面。现在当你碰到一个和过度拟合 vs. 欠拟合,偏差 vs. 方差这几个概念有关的问题的时候,你脑海中将会浮现出一个概念框架,这个框架将有助于你去理解并且解决这个问题!

数据科学看似复杂,但它其实都是通过一系列基础的模块搭建而成的。其中的一些概念已经在这篇文章中提到过,它们是:

过度拟合:过度依赖于训练数据

欠拟合:无法获取训练数据中的存在的关系

高方差:一个模型基于训练数据产生了剧烈的变化

高偏差:一个忽视了训练数据的模型假设

过度拟合和欠拟合造成对测试集的低泛化性

使用验证集对模型进行校正可以避免实际过程中造成的欠拟合和过度拟合

数据科学和其它科技领域其实与我们的日常生活息息相关。在一些与现实有关的例子的帮助下,我们可以很好地解释并理解这些概念。一旦我们了解了一个框架,我们就能够用技术来处理所有的细节,从而解决难题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 偏差
    +关注

    关注

    0

    文章

    5

    浏览量

    7501
  • 机器学习
    +关注

    关注

    66

    文章

    8136

    浏览量

    130587
  • 方差
    +关注

    关注

    0

    文章

    7

    浏览量

    6451

原文标题:机器学习模型初印象:一文区分什么是「过拟合」和「欠拟合」?

文章出处:【微信号:thejiangmen,微信公众号:将门创投】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深层神经网络模型的训练:过拟合优化

    为了训练出高效可用的深层神经网络模型,在训练时必须要避免过拟合的现象。过拟合现象的优化方法通常有三种。
    的头像 发表于 12-02 14:17 2399次阅读
    深层神经网络模型的<b class='flag-5'>训练</b>:过<b class='flag-5'>拟合</b>优化

    R-sq越高代表模型拟合越好?

    多高”的答案就是:视情况而定。 盲目追求高R-sq的模型很容易掉入过度拟合的陷阱,这一点在大数据建模中经常发现。 什么是好的模型? 我们在建模的时候最不愿意看到两种情况:过度拟合和欠
    的头像 发表于 03-07 14:13 1228次阅读
    R-sq越高代表模型<b class='flag-5'>拟合</b>越好?

    matlab应用-曲线拟合工具箱拟合曲线模型

    =[110.3323148.7328178.064202.8258033224.7105244.5711262.908280.0447296.204311.5475]输入y=[5101520253035404550]启动曲线拟合工具箱》cftool进行曲线拟合工具箱界面点
    发表于 11-03 15:31

    拟合问题

    现在的项目需要用采集卡采集一定的数据,然后画出曲线,并计算曲线的面积。所以想先将数据拟合后在采用积分控件。准备先将采集的数值进行拟合得出公式在由公式计算积分,但是采集的数组为一维数组,想用数组的值为Y值,数组索引的值为X值,请问如何才能实现?
    发表于 12-07 21:33

    MATLAB曲线拟合

    5.91 5.48 5.11 5.98];%多项式拟合n=1;A=polyfit(x,y,n);  %n是给定的多项式的次数,拟合出来的结果A是系数向量y1=polyval(A,x);  %计算出拟合的y
    发表于 07-18 01:19

    拟合拟合以及模型的判断

    python-学习曲线,判断过拟合拟合
    发表于 04-24 10:23

    模型的过拟合拟合总体解决方案

    15 模型的过拟合 & 拟合 & 总体解决方案
    发表于 05-15 07:49

    深度学习中过拟合/拟合的问题及解决方案

    的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,然后使用该模型去拟合未来的数据。 在我们机器学习和深度学习的训练过程中,经常会出现过拟合
    发表于 01-28 06:57

    一种新的2次拟合码鉴别器

    一种新的2次拟合码鉴别器:该文针对传统码鉴别器在带限条件下窄相关增益降低的问题,提出在码跟踪环中采用2 次拟合码鉴别器。2 次拟合码鉴别器根据带限条件下的码相关特性,
    发表于 10-29 12:51 10次下载

    Matlab数据拟合基础函数的使用

    Matlab数据拟合基础函数的使用,教你如何拟合两个未知量
    发表于 11-10 16:45 0次下载

    拟合和过拟合是什么?解决方法总结

    拟合是指模型在训练集上表现很好,到了验证和测试阶段就大不如意了,即模型的泛化能力很差。
    的头像 发表于 01-29 17:48 3w次阅读
    欠<b class='flag-5'>拟合</b>和过<b class='flag-5'>拟合</b>是什么?解决方法总结

    区块链分析中的过度拟合还有什么挑战

    当与区块链数据集一起使用时,机器学习模型往往会过拟合
    发表于 02-05 10:35 531次阅读
    区块链分析中的<b class='flag-5'>过度</b><b class='flag-5'>拟合</b>还有什么挑战

    模型训练拟合的分类和表现

    如何判断过拟合呢?我们在训练过程中会定义训练误差,验证集误差,测试集误差(泛化误差)。训练误差总是减少的,而泛化误差一开始会减少,但到一定程序后不减反而增加,这时候便出现了过
    的头像 发表于 02-12 15:49 4226次阅读
    模型<b class='flag-5'>训练</b><b class='flag-5'>拟合</b>的分类和表现

    深度学习中过拟合、欠拟合问题及解决方案

    如何判断过拟合呢?我们在训练过程中会定义训练误差,验证集误差,测试集误差(泛化误差)。训练误差总是减少的,而泛化误差一开始会减少,但到一定程序后不减反而增加,这时候便出现了过
    发表于 01-22 07:44 6次下载
    深度学习中过<b class='flag-5'>拟合</b>、欠<b class='flag-5'>拟合</b>问题及解决方案

    拟合、泛化和偏差-方差权衡

    在机器学习中,过度拟合是当模型变得过于复杂并开始过于接近训练数据时发生的常见问题。这意味着该模型可能无法很好地推广到新的、看不见的数据,因为它基本上记住了训练数据,而不是真正学习底层模
    发表于 06-12 09:31 223次阅读
    过<b class='flag-5'>拟合</b>、泛化和偏差-方差权衡