【导读】前几天,应用数据科学研究者William Koehrsen发布一篇关于“过度拟合和拟合不足”的博文,作者解释了在模型训练中过拟合与欠拟合的概念与原因,并解释了方差与偏差的概念,并介绍了克服模型过拟合与欠拟合的方法——验证集。也许你曾看过关于“过拟合与欠拟合”的博文,但是本文绝对也值得一看,因为作者使用现实生活中的例子进行概念讲解,把概念的理解变成一个有趣的过程,相信会令您耳目一新!
Overfitting vs. Underfitting: A Conceptual Explanation
过拟合与欠拟合:概念解释
基于样例的数据科学核心概念框架
如果你想学英语,虽然你对语言没有预先的知识,但是你也听说过英国最伟大的作家是威廉·莎士比亚。所以,一个自然学习方法就是把自己锁在图书馆里,去记住他的作品。 经过一年的学习,你从学习中走出来前往纽约市,用“Good dawning to thee, friend!”问候你所看到的第一个人。当然,对方可能会不屑一顾 “神经病!”。你可以再试试:“Dear gentlewoman, How fares our gracious lady?”又会得到一个失败而急促的回答。 经过第三次失败的尝试,你会心烦意乱:“What shame what sorrow!”。的确如此:你刚刚经历了建模过程中最基本的错误之一,在训练数据的时候过拟合了。
在数据科学中,过拟合模型被解释为在训练集上具有高方差(high variance)和低偏差(low bias),导致新测试数据泛化能力不佳。我们可以用学习英语的过程来简化“过拟合”概念的理解。我们要建立的模型是如何使用英语进行交流。我们的训练数据是莎士比亚的全部作品,我们的测试集是在纽约与人交流。如果我们用社会接受度来衡量性能,那么我们的模型就不能推广到测试数据(因为莎士比亚的语法肯定和纽约人民的有所不同)。这很容易理解,但方差和偏差该怎么理解呢?
方差是一个模型反应训练数据变化的程度。由于我们只是记忆训练集,所以我们的模型具有很高的方差:它高度依赖于训练数据。如果我们读完J.K Rowling的全部作品,Rowling不是莎士比亚,那么构建出的模型将完全不同。当一个具有高方差的模型被应用到一个新的测试集上时,它不能很好地执行,这是因为原先的模型中没有这部分训练数据。就像一个学生只是记住了教科书中的问题,但在遇到现实世界的问题时就会感到力不从心。
有时甚至是高年级学生也应该走出去看看
偏差是方差的另一面,因为它代表了我们对数据做出假设的力度。 在我们尝试学习英语的过程中,我们没有形成最初的模型假设,并相信Bard的工作将教会关于语言的所有知识。这种低偏差看起来像是积极的——这也是为什么我们会想要偏向于数据?但是,我们应该始终对数据是否能够告诉我们所有的一切保持怀疑态度。任何自然过程都会产生噪音,而我们的训练数据无法捕捉到所有的噪音。通常,我们应该在我们的模型中对于训练数据中没有看到的波动做出一些初步的假设。 例如,在我们开始阅读之前,我们应该明白莎士比亚的作品不能从字面上教我们英语,这样才会使我们对训练数据持谨慎态度。
到目前为止:偏差是指我们忽略了多少数据,方差是指我们的模型依赖于数据的程度。在任何模型中,总是存在偏差和方差之间的关系,当我们建立模型时,我们试图达到最好的平衡。偏差与方差适用于任何模型(从最简单到最复杂的模型),对于数据科学家来说,这是一个重要的概念!
我们看到一个过拟合的模型具有高方差和低偏差。 那反过来呢:低方差和高偏差呢?这就是所谓的欠拟合:相反,如果训练数据过于紧密,一个欠拟合的模型会忽略了训练数据中的经验教训,并且没有学习到输入和输出之间的基本关系。
我们以我们的例子来考虑这个问题。从我们之前试图建立的英语学习的模型中,我们决定提前对模型做一些假设。我们也改变我们的训练数据,通过观看所有的英语节目自学英语。为了避免重复第一次尝试中我们的错误,我们提前做出一个假设,即只有在某种语言中以最常见的词语开始的句子(例如the, be, to, of, and, a)是重要的。 当我们学习的时候,我们不注意其他的句子,相信我们会建立一个更好的模型。
经过长时间的训练,我们再次走上纽约街头。 这一次我们稍微好一点,但是我们的谈话再次失败。虽然我们知道一些英语,可以理解有限的几个句子,但是由于我们对训练数据的偏见,我们没有学习到这个语言的基本结构。该模型没有高方差,但是我们对我们最初的尝试进行了过度矫正,模型欠拟合了!
当我们严格关注数据的时候我们会过拟合。 当我们忽略了数据,就会欠拟合。必须有一种方法来找到最佳的平衡! 幸运的是,在数据科学方面有一套完善的解决方案,叫做验证(validation)。 在我们的例子中,我们只使用了一个训练集和一个测试集,这意味着我们不可能提前知道我们的模型在现实世界中会如何做。理想情况下,我们将有一个“预测试”来评估我们的模型,并在真正的测试之前做出改进。 这个“预测试”被称为验证集,是模型开发的关键部分。
我们两次学习英语的失败使我们更加聪明,现在我们决定使用一个验证集。我们同时使用莎士比亚的作品和朋友秀(Friends show),因为我们学到了更多的数据,几乎总能改善模型。这次在我们训练结束之后,在我们上街之前,我们会评估我们的模型,第一个星期,我们的谈话能力还不行,因为我们的语言模型是很糟糕的。但是,这只是验证集,每次我们犯错误,我们都可以调整我们的模型。最后,我们可以与小组保持自己的对话并宣布我们已经准备好了在测试集上进行测试。
再次在现实世界中进行实验,我们终于成功了!我们的模型现在非常适合沟通,因为我们有一个关键要素,即用于模型改善和优化的验证集。
这个例子可以被简化。 在数据科学模型中,我们使用了大量的验证集,否则我们最终会过拟合验证集。我们将训练数据分成不同的子集,或者如果我们有大量的数据,我们可以使用多个验证集。这个例子涵盖了问题的所有方面,现在,当你听到过拟合与欠拟合以及偏差与方差时,你就有了一个概念可以理解这个问题以及如何解决这个问题!
数据科学可能看起来很复杂,但它确实是建立在一系列基本模块上的。 本文中涉及的概念:
过拟合:对训练数据过度依赖。
欠拟合:不了解训练数据中的关系。
高方差:模型在训练数据上发生显著变化。
高偏差:对模型的假设导致忽略训练数据。
过拟合和欠拟合会导致测试集的泛化能力差。
模型调整的验证集可以防止欠拟合和过拟合。
数据科学和其他技术领域不应该脱离我们的日常生活。通过用现实世界的例子来解释概念,我们可以更好地理解这些概念。如果我们了解这个框架,那么我们可以使用一些技巧来完善。 下一篇文章将提供一个使用图表和度量指标的例子。
欢迎反馈和批评。你可以通过Twitter @koehrsen_will联系到我。
原文链接:
https://towardsdatascience.com/overfitting-vs-underfitting-a-conceptual-explanation-d94ee20ca7f9