机器学习基石13:过拟合风险(Hazard of Overfitting)
本文详细介绍了过拟合的概念,造成过拟合的原因以及过拟合的解决方案。
系列文章
机器学习基石01:机器学习简介
机器学习基石02:感知器算法(Perceptron Algorithm)
机器学习基石03:机器学习的类型(Types of ML)
机器学习基石04:机器学习的可行性(Feasibility of ML)
机器学习基石05:训练与测试(Training versus Testing)
机器学习基石06:泛化理论(Theory of Generalization)
机器学习基石07:VC维(The VC Dimension)
机器学习基石08:噪声和误差(Noise and Error)
机器学习基石09:线性回归(Linear Regression)
机器学习基石10:逻辑回归(Logistic Regression)
机器学习基石11:线性模型分类(Linear Models for Classification)
机器学习基石12:非线性变换(Nonlinear Transformation)
机器学习基石13:过拟合风险(Hazard of Overfitting)
机器学习基石14:正则化(Regularization)
机器学习基石15:交叉验证(Cross Validation)
机器学习基石16:三个重要原则(Three Learning Principles)
文章目录
- 系列文章
- 13. Hazard of Overfitting
- 13.1 What is Overfitting?
- 13.2 The Role of Noise and Data Size
- 13.3 Deterministic Noise
- 13.4 Dealing with Overfitting
- Summary
13. Hazard of Overfitting
上节课介绍了非线性分类模型,通过非线性变换 Φ\PhiΦ 将输入空间 XXX 映射到线性空间 ZZZ,从而可以使用常用的线性模型进行分类,分类完成后,再反变换回原来的空间。最后讲到了非线性变换使计算复杂度增加的问题。本节课介绍这种模型复杂度增加带来的问题:过拟合(overfitting)。
13.1 What is Overfitting?
直观地讲,泛化能力(generalization)比较好,即在训练集上表现良好,在新的样本上也表现良好。那么泛化能力不好意味着什么呢?通过本课程所学知识进行说明,假设输入空间 XXX 是一维的,包含5个样本,目标函数 f(x)f(x)f(x) 为二阶多项式,目标函数(期望输出)为 yn=f(xn)+noisey_n = f(x_n) + noiseyn=f(xn)+noise 。从图中可以看到,五个样本基本都落在目标函数上,只有一个离群点,如果假设函数(预测输出)与目标函数很接近,则此时的 EinE_{in}Ein 比较小。如果使用四阶的假设函数拟合,这五个样本点都在假设和函数上,此时 EinE_{in}Ein 很小 。虽然四阶假设函数的 EinE_{in}Ein比二阶假设函数的 EinE_{in}Ein 要好,但四阶假设函数的 EoutE_{out}Eout 很大。因为有 VC Bound 理论可知,假设函数的阶数越大,即 VC Dimension 越大,会使得模型复杂度越高。这种EinE_{in}Ein 很小 , EoutE_{out}Eout 很大的情况即为泛化能力差(Bad Generalization)。
接下来,通过VC Dimention 和 Error 曲线来说明过拟合和欠拟合的概念:
随着假设函数的阶数增高,VC Dimention 也随之增大。首先看蓝色的线,模型在训练样本上的误差逐渐减小,即 EinE_{in}Ein 一直在减小。然后看紫色的线,在测试样本上的误差呈现先下降后上升的趋势,即 EoutE_{out}Eout 先减小后增大,在 dvc∗d^*_{vc}dvc∗ 处,达到最小。当从 dvc∗d^*_{vc}dvc∗ 向 dvc=1d_{vc} =1dvc=1 (逐渐减小)的过程中, EinE_{in}Ein 和 EoutE_{out}Eout 都在增大,这种情况称为欠拟合(underfitting);当 dvc∗d^*_{vc}dvc∗ 向 dvc=1126d_{vc} = 1126dvc=1126 (逐渐增大)的过程中, EinE_{in}Ein 不断下降, EoutE_{out}Eout 不断上升,这种情况称为过拟合(overfitting)。
实际应用过程中,训练模型时,经常通过查看训练集的损失曲线和验证集的损失曲线判断模型的拟合情况。欠拟合对应的曲线为训练损失和验证损失都在下降,但还没有到达最低点;过拟合对应的曲线为训练损失不断下降,验证损失先下降后上升。
泛化能力差与过拟合的关系可以描述为:过拟合是导致泛化能力差的原因。
一个好的模型,应该具有良好的拟合能力,即 EinE_{in}Ein 和 EoutE_{out}Eout 都比较小。下图是比较直观的理解。
下面通过一个形象的例子说明导致过拟合的原因:
机器学习 | 开车(不是去幼儿园的车) |
---|---|
过拟合 | 发生车祸 |
使用过大的 VC-Dimention | 开得太快 |
噪声 | 崎岖不平的路面 |
样本数量 NNN 的多少 | 路况观察能力的大小 |
通过上例可知,VC Dimension、样本噪声、样本数量是影响模型拟合能力的关键因素。
习题1:
13.2 The Role of Noise and Data Size
为了更直观的解释产生过拟合的因素,设计两个目标函数,一个为10次多项式,另一个为50次多项式,前者加上噪声,后者无噪声。下图中,离散的圆圈是样本点,蓝色的曲线是目标函数。数据没有完全
落在曲线上,是因为加入了噪声(noise)。
接下来,使用两个学习模型(假设函数),分别对以上的问题进行建模。其中一个为二次多项式 (假设空间为 H2H_2H2),另一个为十次多项式 (假设空间为 H10H_{10}H10 )。两种模型对两个问题的拟合结果如下图所示:
其中绿色线表示二次模型学习到的假设函数 g2g_2g2,红色线表示十次模型学习到的假设函数 g10g_{10}g10。
从 EinE_{in}Ein 和 EoutE_{out}Eout 的结果可以看出,二次模型的EinE_{in}Ein 和 EoutE_{out}Eout 都比较小,基本在同一个数量级;而十次模型的 EinE_{in}Ein 虽然很小,并且能拟合几乎所有的样本点,但是 EoutE_{out}Eout 很大,与其 EinE_{in}Ein 的数量级相差数倍。即上图中针对两个不同问题的十次模型(假设函数)均发生了过拟合;但二次模型却表现良好。难道在该问题中二次模型的学习能力比十次模型的好吗?答案是肯定的。
先看一下学习曲线:
在学习曲线中,横轴是样本数量N,纵轴是误差Error。EinE_{in}Ein 和 EoutE_{out}Eout 可以表示为:
Ein=noiselevel∗(1−d+1N)E_{in} = noise \ level \ * (1-\frac{d+1}{N})Ein=noise level ∗(1−Nd+1)
Eout=noiselevel∗(1+d+1N)E_{out} = noise \ level \ * (1+\frac{d+1}{N})Eout=noise level ∗(1+Nd+1)
其中 ddd 为模型阶次(数据集的特征数量)。
上例中,数据量N比较小,即对应于上图中的灰色区域。左图的灰色区域中,因为 d=2d=2d=2,EinE_{in}Ein 和 EoutE_{out}Eout 比较接近;右图中的灰色区域中,d=10d=10d=10,根据 EinE_{in}Ein 和 EoutE_{out}Eout 的表达式, EinE_{in}Ein 很小,而 EoutE_{out}Eout 很大,这就印证了:二阶模型的 EinE_{in}Ein 更接近 EoutE_{out}Eout ,因此泛化能力更好。
如果数据量N很大的时候,上面两图中EinE_{in}Ein 和 EoutE_{out}Eout 都比较接近。但是,对于高阶模型,ZZZ 域中的特征很多的时候,需要的样本数量N很大,且容易发生维度灾难。
上面阐释了在含有噪声的情况下,低次多项式假设比和目标函数同次的多项式假设表现更好。另一个例子中,在目标函数为50阶多项式(期望输出)且没有加入噪声的情况下,仍然是二阶的模型拟合的效果更好,为什么会这样?
实际上,当模型很复杂的时候,即50阶多项式的目标函数,无论是二阶模型还是十阶模型,都不能学习的很好,这种复杂度本身就会引入一种噪声。所以,这种高阶无噪声的问题,也可以类似于10阶多项式的目标函数加上噪声的情况,只是两者的噪声不同, 下一小节会详细解释。
习题2:
13.3 Deterministic Noise
本小节通过更细节的实验来说明什么时候要考虑过拟合。
假设产生的数据分布由两部分组成:第一部分是目标函数 f(x)f(x)f(x), 使用复杂度 QfQ_fQf 表示,即为 QfQ_fQf 阶多项式;第二部分是噪声 ,服从高斯分布,噪声强度为 σ2\sigma ^2σ2。接下来分析噪声的强度不同对过拟合有什么样影响,数据量为N。
不难看出,过拟合与噪声强度 σ2\sigma ^2σ2,目标函数复杂度 QfQ_fQf 以及数据量N都有密切关系,以下通过固定某一参数对比其它两个参数的方式,观察每个参数对过拟合的影响,分为 (N,σ2)(N,\sigma^2)(N,σ2) 和 (N,Qf)(N,Q_f)(N,Qf) 两种情况讨论。
使用与上一小节相同的学习模型,即二阶模型和十阶模型。作如下约定:
- 最优假设函数分别表示为:g2∈H2,g10∈H10g_{2} \in H_{2},g_{10} \in H_{10}g2∈H2,g10∈H10;
- 错误率满足 Ein(g10)≤Ein(g2)E_{in}(g_{10}) \le E_{in}(g_2)Ein(g10)≤Ein(g2);
- 使用 Eout(g10)−Eout(g2)E_{out}(g_{10}) - E_{out}(g_2)Eout(g10)−Eout(g2) 作为过拟合的衡量。
上图中,左图表示固定模型复杂度(模型阶数) Qf=20Q_f = 20Qf=20 时,噪声强度 σ2\sigma ^2σ2 和数据量 N 对模型拟合的影响。右图表示固定噪声强度 σ2=0.1\sigma ^2 = 0.1σ2=0.1时, 模型复杂度(模型阶数) $Q_f $ 与数据量 N 对模型拟合的影响。
图中的颜色表示过拟合程度,深红色的部分表示过拟合,蓝色表示表现好。即红色越深,过拟合程度越高;蓝色越深,过拟程度越低。
左图中,红色区域集中在数据量N很小或者噪声强度 σ2\sigma ^2σ2 很大的时候。也就是说,模型复杂度 QfQ_fQf 固定时,数据量N越大,噪声强度 σ2\sigma ^2σ2 越小,越不容易发生过拟合。
右图中,红色区域集中在数据量N很小或者模型复杂度 QfQ_fQf 很大的时候。也就是说,噪声强度 σ2\sigma ^2σ2 固定时,数据量N越大,模型复杂度 QfQ_fQf 越小,越不容易发生过拟合。
由以上分析可知,噪声强度 σ2\sigma ^2σ2 和模型复杂度 QfQ_fQf 对模型拟合程度有很大影响,这类由高斯噪声产生的噪声称为 随机噪声(stochastic noise);这类由模型复杂度导致的噪声称为 确定性噪声(deterministic noise)。
总结一下,总共有四个原因导致过拟合:
- 数据量 N 不足;(训练样本不足)
- 随机噪声 σ2\sigma ^2σ2 的大小;(数据收集过程中引入的误差)
- 确定性噪声 QfQ_fQf 的大小;(模型复杂度,比如网络层数)
- 过量的 VC Dimention;(样本中的特征数量过多)
上文解释了目标函数 f(x)f(x)f(x) 的模型复杂度 QfQ_fQf 很高的时候,数据中有无噪声对最后结果影响不大。因为目标函数的模型过于复杂,再好的假设函数(Hypothesis)也会与它有差距,这种差距就是上文提到的确定性噪声。确定性噪声与随机噪声不同,但是都会导致过拟合。确定性噪声的大小与假设函数有关,并且固定点 x 的确定性噪声是一定的。
习题3:
13.4 Dealing with Overfitting
回顾第一小节提到的导致过拟合的原因:
机器学习 | 开车(不是去幼儿园的车) |
---|---|
过拟合 | 发生车祸 |
使用过大的 VC-Dimention | 开得太快 |
噪声 | 崎岖不平的路面 |
样本数量 NNN 的多少 | 路况观察能力的大小 |
使用同样的类比,总结一下过拟合解决方案:
从简单的模型出发 | 慢点开(去幼儿园的车) |
---|---|
数据清洗(data cleaning/pruning) | 获取更精确的路况信息 |
数据增强(data hinting) | 获取更多的路况信息 |
使用正则化(regularization) | 及时踩刹车 |
使用验证集(validation) | 安装仪表盘 |
数据清洗举例:
数据增强举例:
习题4:
Summary
本节课介绍了以下内容:
- 过拟合的概念:当 EinE_{in}Ein 很小 EoutE_{out}Eout 很大的时候,会出现过拟合。
- 过拟合的原因:数据量 N,随机噪声,确定性噪声以及过量的样本特征。
- 过拟合的解决:本节课通过简单示例介绍了数据清洗和数据增强;后两节课会专门介绍正则化和验证。
参考:
https://www.cnblogs.com/ymingjingr/p/4306666.html
https://github.com/RedstoneWill/HsuanTienLin_MachineLearning
机器学习基石13:过拟合风险(Hazard of Overfitting)相关推荐
- 机器学习基石06:泛化理论(Theory of Generalization)
本文介绍了机器学习的泛化理论,包括突破点的限制,上限函数的基本情形,上限函数的归纳情形以及形象化的证明. 系列文章 机器学习基石01:机器学习简介 机器学习基石02:感知器算法(Perceptron ...
- 机器学习基石12:非线性变换(Nonlinear Transformation)
本文介绍了非线性变换的整体流程:通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行线性分类. 之后介绍了非线性变换存在的问题:时间复杂度和空间复杂度的增加. 最后证明了非线性变换的 ...
- 机器学习基石05:训练与测试(Training versus Testing)
上一篇文章介绍了机器学习的可行性.本文将讨论机器学习的核心问题,严格证明为什么机器可以学习. 系列文章 机器学习基石01:机器学习简介 机器学习基石02:感知器算法(Perceptron Algori ...
- 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行分类,分析了非线性变换可能会使计算复杂度 ...
- 「机器学习速成」过拟合的风险和泛化
https://www.toutiao.com/a6702764208561340942/ 大家好,今天我们学习[机器学习速成]之过拟合的风险和泛化. 泛化是指模型很好地拟合以前未见过的新数据的能力. ...
- 台大机器学习基石学习笔记
台大机器学习基石学习笔记 标签(空格分隔): 机器学习 目录 台大机器学习基石学习笔记 目录 Lecture 1 The Learning Problem Course Introduction Wh ...
- 機器學習基石 机器学习基石(Machine Learning Foundations) 作业1 习题解答
大家好,我是Mac Jiang,今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业1的习题解答.笔者是在学习了Ng的Machine ...
- 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
红色石头的个人网站:redstonewill.com 上节课我们主要讲了为了避免overfitting,可以使用regularization方法来解决.在之前的EinEinE_{in}上加上一个reg ...
- 台湾大学林轩田机器学习基石课程学习笔记14 -- Regularization
红色石头的个人网站:redstonewill.com 上节课我们介绍了过拟合发生的原因:excessive power, stochastic/deterministic noise 和limited ...
最新文章
- 亿级用户中心的设计与实践
- rea t插件 vscode_推荐VSCode12个比较实用的插件
- arrive get
- String#repeat来到Java吗?
- Flash游戏开发实战(一)
- 使用爬虫爬去网上的图片并保存
- BZOJ1185[HNOI2007] 最小矩形覆盖
- 自己写的配筋的Android应用——RCHelper,依据SL191-2008
- ActiveMQ简介
- URL重写实现会话跟踪
- 攻击 xxs_“吃鸡”玩家被xxs故意炸倒,举报时出现提示,光子站在xxs一边!
- linux 手机当显示器,[原创]平板/手机/笔记本作为显示器使用
- 全球及中国智能家居市场十四五竞争形势及营销模式咨询报告2021-2027年
- java poi_Java POI的学习(一)——Word
- RabbitMQ了解——>安装——>入门
- 手机版java启动器,我的世界Launcher启动器
- 2020年全球EDA软件行业市场竞争格局分析 三巨头三足鼎立
- nginx服务器网站目录浏览,Nginx开启目录浏览功能 | 系统运维
- 小学生python游戏编程arcade----灯光示例
- 推荐5个神仙软件,个个让你爱不释手
热门文章
- 单独编译某个驱动模块
- base64文件流转换成pdf格式下载/打印,兼容IE浏览器
- KDE-Edu(教诲性质软件)引见
- 浏览器群控android手机软件STF试玩
- xp 本地计算机策略组,Windows XP组策略应用
- NDepend v2022.2.1.9665 专业版
- IBM V7000存储配置
- linux 命令总结
- java库存信息管理系统_Java商户管理系统 客户管理 库存管理 销售报表 SSM项目源码...
- 学计算机土味情话,14句“土味”情话,学过会计都懂的浪漫!