之前在《过拟合和欠拟合(Over fitting & Under fitting)》一文中简要地介绍了过拟合现象,现在来详细地分析一下过拟合产生的原因以及相应的解决办法。

过拟合产生的原因:

第一个原因就是用于训练的数据量太少。这个很好理解,因为理想的训练数据是从所有数据中抽取的无偏差抽样。如果训练数据量较少,那么很有可能训练数据就不能完全反映所有数据的规律。因此模型很可能学习到的是一些特殊的例子,而不是真实的规律。

之前说过,过拟合就是模型把噪音也学习了进去。其中一个噪音就是大家所熟知的随机产生的噪音(stochastic noise),比如说测量误差,记录误差等等,这也是第二个原因。

第三个原因是目标函数的复杂度很高,目标函数和假设函数之间的差距也可以看作是一种噪音,称为确定性噪音(deterministic noise)。在训练数据有限的情况下,如果目标函数很复杂,那么就算假设函数与之很接近,也会产生较大的噪音。

下图展现了在训练数据有限的情况下,目标函数和假设函数之间的差距。

  • 左图:目标函数是一个十次多项式函数,根据目标函数产生了15个数据点,数据产生时加入了一些随机噪音,分别使用二次多项式(绿线)和十次多项式(红线)拟合
  • 右图:目标函数是一个五十次多项式函数,根据目标函数产生了15个数据点,数据产生时不加入噪音,分别使用二次多项式(绿线)和十次多项式(红线)拟合

经过试验,这两个场景都是十次多项式的训练误差小,但是其验证误差要比二次多项式的大很多。这说明十次多项式发生了过拟合现象。

下图是用二次多项式和十次多项式拟合的学习曲线:

可以看出,十次多项式函数的训练误差一直要比二次多项式函数的低,但是当训练数据有限时,十次多项式函数的验证误差要比二次多项式函数的高不少。

一般我们会认为假设函数离目标函数越接近越好,但是显然,在训练数据有限的情况下,这种想法是不正确的。因此,当训练数据有限时,应该用简单的模型来拟合,这样还有可能会取得不错的效果。之前是不是常听到别人说线性回归模型虽然很简单,但是往往会取得不错的预测效果?这也正说明了这个道理。

下图是当目标函数复杂度固定时,样本量与噪音强度对过拟合程度的影响(深红色表示过拟合程度很高):

可以看出,样本量越少,噪音强度越高,过拟合程度也就越高。

下图是当噪音强度固定时,样本量与目标函数复杂度对过拟合程度的影响(深红色表示过拟合程度很高):

可以看出,样本量越少,目标函数复杂度越高,过拟合程度也就越高。

这两张图的区别在于左下角,可以看到,第二张图,当样本量很少,目标函数复杂度很低时,也会产生过拟合现象。这是因为使用了过于复杂的模型来拟合数据,这也带出了第四个原因---模型复杂度比目标函数高。

总结一下过拟合产生的原因:

  • 训练数据太少
  • 数据噪音强度大:随机噪音(stochastic noise),确定性噪音(deterministic noise)
  • 模型复杂度太高

解决办法:

  • 增加训练数据量 --- 一般情况下,由于经济条件的限制,我们没有办法获得更多的训练数据。如果没有办法获得更多的训练数据,那么可以对已有的样本进行简单的变换,从而获得更多的样本。比如识别手写数字时,可以把数字稍作倾斜,又或者识别图像时,可以对图像做翻转,这样特征发生改变,但是目标保持不变,这样就可以当成产生一些新的样本,称为虚拟样本。但是需要注意,这种方法产生的数据不一定符合原有数据的分布,因此新构建的虚拟样本要尽量合理。
  • 减少随机噪音 --- 可以清洗数据(比如:修正不准确的点,删除不准确的点,等),但是如果这些点相比训练数据很少的话,这种处理产生的效果不太明显。
  • 减少确定性噪音,降低模型复杂度 --- 使用简单的模型拟合数据;对现有模型进行正则化。

过拟合产生的原因(Root of Overfitting)的更多相关文章

  1. 机器学习(四)正则化与过拟合问题 Regularization / The Problem of Overfitting

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  2. Ng第七课:正则化与过拟合问题 Regularization/The Problem of Overfitting

    7.1  过拟合的问题 7.2  代价函数 7.3  正则化线性回归 7.4  正则化的逻辑回归模型 7.1  过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设预测可能能够非常好地适应训练 ...

  3. 过度拟合(overfitting)

    我们之前解决过一个理论问题:机器学习能不能起作用?现在来解决另一个理论问题:过度拟合. 正如之前我们看到的,很多时候我们必须进行nonlinear transform.但是我们又无法确定Q的值.Q过小 ...

  4. AI - TensorFlow - 过拟合(Overfitting)

    过拟合 过拟合(overfitting,过度学习,过度拟合): 过度准确地拟合了历史数据(精确的区分了所有的训练数据),而对新数据适应性较差,预测时会有很大误差. 过拟合是机器学习中常见的问题,解决方 ...

  5. TensorFlow实战第六课(过拟合)

    本节讲的是机器学习中出现的过拟合(overfitting)现象,以及解决过拟合的一些方法. 机器学习模型的自负又表现在哪些方面呢. 这里是一些数据. 如果要你画一条线来描述这些数据, 大多数人都会这么 ...

  6. 防止过拟合的方法 预测鸾凤花(sklearn)

    1. 防止过拟合的方法有哪些? 过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合. 产生过 ...

  7. TensorFlow从1到2(八)过拟合和欠拟合的优化

    <从锅炉工到AI专家(6)>一文中,我们把神经网络模型降维,简单的在二维空间中介绍了过拟合和欠拟合的现象和解决方法.但是因为条件所限,在该文中我们只介绍了理论,并没有实际观察现象和应对. ...

  8. matlab函数拟合

    1 函数拟合 函数拟合在工程(如采样校正)和数据分析(如隶属函数确定)中都是非常有用的工具.我这里将函数拟合分为三类:分别是多项式拟合,已知函数类型的拟合和未知函数类型的拟合.matlab中关于函数的 ...

  9. mysql部署后无法远程连接的原因(错误代码10061),服务监听127.0.0.1和0.0.0.0的区别

    在Ubuntu上部署mysql服务并添加了一个非root用户后,发现无法远程连接, Navicat连接mysql出现2003——can't connect to mysql server on loc ...

随机推荐

  1. python3的pip3安装

    ---恢复内容开始--- pip3的安装需要对应一整套python的编译工具库,所以安装好的pip3是这个样子: inear@Ai:~$ pip3 -V pip 18.1 from /usr/lib/ ...

  2. WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因

    原文:WPF 的命令的自动刷新时机--当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因 在 WPF 中,你可以使用 Command="{Binding Walt ...

  3. Ubuntu中安装(升级)GraphicsMagick

    1 前言 采用官方下载安装包然后强制安装升级Ubuntu中有的老版本gmagick-1.3.28,升级到gmagick-1.3.31 仅用来记录使用. 2.准备工作 1.下载安装包 https://s ...

  4. 单IP、网络、别名管道限速的设置

    单IP.网络.别名管道限速的设置 在设备上,控制网络限速最常用的是流量×××中的“限制器”,你可以把它理解为一个管道,20Mit/s的下载管道,那么下载的最大流量就不会超过20Mit/s.流量限制器结 ...

  5. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  6. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  7. Filter DSL 常用语法 -- 基本查询语法,必会

    转发自:https://www.cnblogs.com/ghj1976/p/5293250.html term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed ...

  8. JAVA基础之设置随机成语验证码

    package com.oracle; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ja ...

  9. ajax的五大步骤

    什么是Ajax? AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. var btn = document.getElementsByTagName('button')[ ...

  10. 金融finaunce单词finaunce财经

    金融(FINANCE或FINAUNCE)就是对现有资源进行重新整合之后,实现价值和利润的等效流通.(专业的说法是:实行从储蓄到投资的过程,狭义的可以理解为金融是动态的货币经济学.) 金融是人们在不确定 ...