作者:Ahmed Gad

翻译:韩海畴

校对:丁楠雅

本文约2000字,建议阅读5分钟
本文带大家认识了什么是过拟合,并且示范了用正则化的方法来避免过拟合的问题。

多项式回归&过拟合

你可能训练过这样的机器学习模型,它在训练样本上表现得无可挑剔,却在新样本预测上一塌糊涂。你可曾想过为什么会发生这种问题吗?本文解释了作为其中原因之一的过拟合,并用简单步骤示范了基于回归的正则化方法来避免过拟合问题。

机器学习就是用数据和算法训练一个模型来对从未见过的数据(测试数据)进行准确预测。举个例子,为了得到一个分类器,专家需要搜集机器学习算法所需的训练数据。专家负责找到最佳的、能够将不同类别的事物区分开来的特征。这些特征将被用于训练机器学习算法。比方说我们准备用下面的训练数据创建一个识别图片里是否有猫的机器学习模型。

我们首先要回答的问题是:“最佳特征是什么?”,这是机器学习中的关键问题,选择的特征越正确,模型将来给出的预测就会越准确,反之亦然。让我们试着观察上述图形并找出猫的若干代表性特征,比如两个黑色瞳孔和两只对角线方向的耳朵。假设我们设法从上面的训练图像提取了这些特征并创建了一个机器学习模型。这个模型得到了存在于大部分猫身上的特征,所以能够处理各种各样关于猫的图像。我们可以在新的数据上对这个模型进行测试。假设模型对测试数据的分类准确性是x%。

人们希望提高分类的准确性时,第一个想到的办法是使用比原来更多的特征。因为有区分度的特征越多,模型准确率就越高。通过再次检查训练数据我们能发现更多的特征,比如图像的整体颜色,训练数据中的所有猫都是白色的、眼睛虹膜是黄色的。特征向量会有如下所示的四个特征,这些特征将被用来再次训练机器学习模型。

特征

黑色瞳孔

对角线耳朵

白色毛色

黄色虹膜

把模型训练好后接着测试它。加入新的特征向量后,预期的分类准确性测试结果比x%变小了。为什么会这样?因为训练数据中的部分特征并不是在所有猫的图片中都存在。测试数据里有黑猫和黄猫,训练数据中只有白猫。有的猫也没有黄色的虹膜。

这种选用特征在训练样本中表现出色但在测试样本中表现糟糕的情况被称为过拟合。模型所使用的一些特征只在训练数据中出现,但在测试数据中并不存在。

上文用一个复杂的案例通俗地解释了过拟合的概念。但为了详细说明,使用简单的例子会更好。因此下文的讨论将以回归为例。

通过一个回归案例理解正则化

假如我们想创建一个契合下图所示数据的回归模型。我们可以用多项式回归。

我们可以从一次线性模型开始,这是最简单的模型。

其中和 是模型参数,x是唯一使用的特征,该模型的图像如下:

基于下面给出的损失函数,我们可以看到该模型和数据拟合得不是很好。

其中是样本的模型输出值,是该样本的期望输出值。

上面的模型太过简单,有许多预测数值都不准确。因此,我们应该找一个更复杂的、能和数据有较好拟合的模型。为此,我们可以将方程的次方从一次提升到二次。如下:

当把特征提升至二次方后,我们创建了一个新的特征。同时,我们不仅捕捉到了数据中的线性部分,也捕捉到了部分非线性的数据。新的模型图如下所示:

从上图可看出二项式对数据的拟合度好于一项式。但是二次方程在某些数据样本上仍拟合得不太好。于是我们创建了一个更复杂的三次多项式模型,如下:

模型图会变成这样:

可以看出新的模型在加上新的特征后捕捉到了更多的三次方数据,对数据的拟合度更好。为了进一步提升拟合度,我们将方程提升到四次方,如下:

模型图变成这样:

看起来多项式方程的方次越高模型的拟合度越好。但是有些重要的问题需要回答。如果通过增加特征数量来增加多项式的次方数就能得到更好的结果,为什么不用一个非常高次方的方案,比如100次方?解决一个问题所用的方程最佳次方数应该是多少?

模型载荷/复杂度


有一个术语叫“载荷”或“复杂度”。模型的载荷/复杂度指的是模型可处理的变量数量。载荷越大,则模型能处理的变量数越多。第一个模型的载荷就比第四个模型的载荷要小。在我们的案例中,载荷是随多项式次方数的增加而增加的。

毫无疑问,多项式方程的次方数越大,对数据的拟合度就越好。但需要记住增加多项式的次方也会增加模型的复杂性。如果模型的载荷过高可能会导致过拟合。这种情况下,模型会变得非常复杂,与训练数据拟合得很好,但是在新的数据上表现很差。而机器学习的目标不仅仅是创建一个在训练数据上表现强劲的模型,还期望模型在新的数据样本上同样出色。

四次方模型是非常复杂的。的确,它与旧有的数据契合度很好,但在未见过的数据上就未必了。在这个情况下,该方程中新选用的特征抓取了过量的细节。因新的特征将模型变得过于复杂,我们需要将其剔除。

在这个例子中,我们已经知道哪个特征需要被剔除。于是,我们可以将模型恢复到原有的三次模型()。但在实际工作中,我们不知道具体该剔除哪个特征。同时,假如新的特征不是特别糟糕,我们只想削弱它而非完全剔除它。我们该怎么做呢?

回顾损失函数,它唯一的目标就是将预测错误值最小化/削弱。我们可以设置一个将的影响最小化的新目标。损失函数经调整以削弱后会变成下面这样:

我们现在的目标是将损失函数最小化。我们现在只对将其中的项“”最小化感兴趣。显而易见,为了将最小化,我们应该将最小化,因为这是我们唯一能改变的自由参数。如果这个特征非常糟糕,我们可以将参数设为零从而完全将其剔除,如下:

通过将其剔除,我们回到了原来的三次多项式方程在已有数据上的表现不如,但总的来说,它在新数据上的表现会比好。

但如果是一个比较好的特征,我们只是想减弱它的影响而非完全剔除它,我们可以将它的值设得接近0(比如0.1),如下。通过这样,我们限制了的效用。因此,新模型不会像原先那样复杂。

回头看,看起来它比要简单,它在已有的和未见过的数据样本中都有良好表现。所以,我们应剔除在中使的新特征或在它表现尚可的情况下减弱其影响。我们可以通过调整损失函数来实现这点。

正则化


请注意,我们因为有数据图像而确实知道是最契合数据的模型。这是一个我们能手动解决的简单问题。但是随着样本数量和数据的增加,以及我们手头没有数据图像一类的信息时,我们就无法轻易得出相关结论。必须有一个东西自动告诉我们哪个次方的模型最契合数据并告诉我们应对未知数据时应该削弱哪一个特征。

正则化会帮助我们选择适合数据的模型复杂度。这在自动削弱那些把模型复杂度搞得过高的特征方面很有用。当选用的特征不算太差、多少能帮助我们改善预测结果以至于我们只是想削弱特征而非移除特征时,正则化是非常有用的。正则化会削弱所有选用的特征而非某个选定的子集。我们之前的例子只是削弱了这两个特征。但这种情况在运用正则化时不会发生。

通过运用正则化方法,一个新的项被加入了损失函数以削弱特征,从而使损失函数变成下面这样:

也可以在将Λ移出后把式子写成这样。

新加入的项用于削弱特征以控制模型的复杂度。我们在加入正则化的项之前的目标是尽可能减小预测误差。现在我们的目标是尽可能减小误差的同时避免模型变得过于复杂、避免过拟合。

正则化参数lambda (λ)控制如何削弱特征。这是一个没有固定值的超参数。它的值基于手头的任务而变化,当它的值上升时,特征会被削弱得很厉害,其结果是让模型变得更简单。反之,特征被削弱得不那么厉害,模型复杂度上升。(λ)为零则意味着特征没有削弱。

当(λ)为零时,的数值如下面的方程一样没有被削弱。这是因为把(λ)的值设为0意味着去除正则化项并对误差放任不管。于是,我们的目标将变成仅把误差最小化到接近0。当最小化误差成为目标时,模型可能会过拟合。

但是当削弱参数 λ的值非常大时(比方说一个亿),对参数的削弱将是巨大的,为了将损失控制在其最小值,会造成参数为0的结果。模型会有一个如下所示被削弱的

请注意,正则化的项数是从1而非0开始。实际上,我们只用正则化值来削弱特征()。因为不是一个相关特征,我们没有理由去削弱它。在这种情况下,模型将会是如下图的

作者简介Ahmed Gad于2015年7月获埃及Menoufia大学计算机与信息学院学士学位及优秀学生荣誉称号。他作为学院中的第一名在2015年被推荐到埃及的一所学院任助教并在2016年在学院中兼任研究员工作。他目前的研究方向包括深度学习、机器学习、人工智能、数字信号处理和计算机视觉。

译者简介


韩海畴,中国人民大学2014届市场营销系本科毕业生,目前在海南工作。对大数据在市场营销及金融方面的运用感兴趣。希望能在数据派THU这个平台上与志同道合的朋友们一起学习和交流。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。


点击“阅读原文”拥抱组织

教你简单解决过拟合问题(附公式)相关推荐

  1. 苹果显示4g却上不了网_教你简单解决电脑为何上不了网

    在使用网络的过程中,经常会遇到电脑不能上网的情况,当出现这种情况后,首先分析网络服务商是否出现网络故障,其次是否宽带链接设备是否出现问题,最后是否系统设置有问题.必须有合理的检查步骤,才能快速解决电脑 ...

  2. [教程] 教你简单解决邮件乱码(Mac/iPhone/iPad通用)

    看到坛子里很多人说自带Mail发邮件对方收到是乱码, 所以用Sparrow,Outlook云云. 个人认为还是自带的Mail用着舒服. 这里就发一下自己冲浪国外网站找到的方法吧. (忘了在哪里找到的了 ...

  3. cpu散热器怎么拆_电脑CPU处理器与整机温度高 教你简单解决

    炎炎夏日,电脑卡.慢.死机.关机多数是中央处理器(以下简称CPU)温度过高引起的. 如果有上述感觉,那么你很可能就是这个病症. 第一步.需要确定真正是否为温度高的问题,先不要着急拆机,软件测试,一般用 ...

  4. 简单有趣的 NLP 教程:手把手教你用 PyTorch 辨别自然语言(附代码)

     简单有趣的 NLP 教程:手把手教你用 PyTorch 辨别自然语言(附代码) 雷锋网(公众号:雷锋网)按:本文作者甄冉冉,原载于作者个人博客,雷锋网已获授权. 最近在学pyTorch的实际应用 ...

  5. 手把手教你开发photoshop面板插件(附demo和工具)

    手把手教你开发photoshop面板插件(附demo和工具) 一.前言 二.插件演示 三.目录文件介绍 3.1 插件安装 3.2 开启ps开发模式 3.3 插件文件介绍 3.4 manifest 文件 ...

  6. 自动发邮件的程序 c语言,5分钟!教你用C语言发送邮件:附送源码+教学!

    5分钟!教你用C语言发送邮件:附送源码+教学!-1.jpg (10.71 KB, 下载次数: 0) 2018-9-3 02:21 上传 关注<一碳科技>,获取更多知识! 前言 相信年夜家都 ...

  7. 过拟合解决方法python_《python深度学习》笔记---4.4、过拟合与欠拟合(解决过拟合常见方法)...

    <python深度学习>笔记---4.4.过拟合与欠拟合(解决过拟合常见方法) 一.总结 一句话总结: 减小网络大小 添加权重正则化 添加 dropout 正则化 1.机器学习的根本问题? ...

  8. 【机器学习】L1正则化与L2正则化详解及解决过拟合的方法

    在详细介绍L1与L2之前,先讲讲正则化的应用场景. 正则化方法:防止过拟合,提高泛化能力 所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越, ...

  9. 防止过拟合以及解决过拟合

    本文转载:http://blog.sina.com.cn/s/blog_53c47a2f0102vjyf.html 过拟合:为了得到一致假设而使假设变得过度复杂称为过拟合."一个过拟合的模型 ...

最新文章

  1. Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。
  2. 【学习笔记】区块链应用判断准则
  3. Html5实践之EventSource
  4. Android SrcollView嵌套recyclerView的使用
  5. 计算机网络 鲁士文,《在职研究生计算机网络课程统考复习指南》鲁士文 编_孔网...
  6. Quartz Scheduler插件–隐藏的宝藏
  7. fixed 语句(C# 参考)
  8. VSCode打开底部状态栏
  9. python 线性回归 约束_python – Tensorflow:具有非负约束的线性回归
  10. oracle rac实例停止,oracle rac启停命令使用实例
  11. 微pe工具箱 系统安装教程_微PE工具箱《U盘给电脑装GHOST系统》教程
  12. Android 不透明度值换算
  13. 普通型母函数和指数型母函数
  14. PIL (Python Imaging Library) 教程
  15. windows 连接蓝牙耳机失败 解决方法
  16. OneNET麒麟座应用开发之九:与SD卡通讯并保存数据
  17. qt中的QNetwork的通信的使用
  18. Java 堆默认大小
  19. WinIo驱动级键盘模拟编程
  20. DB2DIAG 命令学习

热门文章

  1. 阿里云服务器ECS Linux系统分析nginx或apache当天访问最多的IP
  2. [转]WxEmojiView
  3. 为ubuntu操作系统增加root用户
  4. SSL/TLS 协议详解
  5. android工程中让人很不爽的“×××警告”
  6. sed当中使用变量替换以及执行外部命令
  7. linux无法启动之-“/dev/xxx unexpected inconsistency, run fsck manually”的解决
  8. icns图标制作_PPT制作必备:这6个网站,帮你打造超强的图标素材库
  9. Linux学习(十三)---搭建JavaEE环境
  10. 2021-05-09为什么pip install安装的包anaconda识别不了