文章目录

  • 0. 引言
  • 1. 误差、偏差和方差的数学定义
  • 2. 偏差与方差的直观理解
  • 3. 偏差、方差与欠拟合、过拟合的关系
  • 4. 欠拟合、欠拟合的产生原因及解决方案

0. 引言

作为一名算法工程师,在利用算法模型解决实际问题时,模型的欠拟合、过拟合问题是无论如何都无法回避的。这两个问题的表象相比很多人都知道,但是涉及到它们背后的产生原因、本质以及解决方法,要说清楚还是不容易的。

1. 误差、偏差和方差的数学定义

误差(error)的概念有两类,一类是数据本身带来的噪声,一般假设服从均值为0的高斯分布,记为 ϵ ∼ N ( 0 , σ ϵ ) \epsilon \sim N(0,\sigma_{\epsilon}) ϵ∼N(0,σϵ​)(噪声的各变量是独立同分布于均值为0、方差为 σ ϵ \sigma_{\epsilon} σϵ​的正态分布),且往往是认为无法避免的;另一类是模型输出与实际值之间的误差,例如均方误差(mean squared error, MSE),这个是实际应用中我们所直接关心的,一般希望它越小越好。
假设现在有因变量 y y y(输出)由自变量 x x x(输入)决定,记真实的映射函数为 f ( x ) f(x) f(x)(也叫真实的模型),则
y = f ( x ) + ϵ (1-1) y=f(x)+\epsilon \tag{1-1} y=f(x)+ϵ(1-1)
对应的,记我们从数据中学习出的模型为 f ^ ( x ) \hat f(x) f^​(x),那么偏差(bias)的定义为:
B i a s ( f ^ ( x ) ) = E ( f ^ ( x ) ) − f ( x ) (1-2) Bias(\hat f(x))=E(\hat f(x))-f(x)\tag{1-2} Bias(f^​(x))=E(f^​(x))−f(x)(1-2)
方差的定义为:
V a r ( f ^ ( x ) ) = E [ ( f ^ ( x ) − E ( f ^ ( x ) ) ) 2 ] (1-3) Var(\hat f(x))=E\left[\left(\hat f(x)-E(\hat f(x))\right)^2\right]\tag{1-3} Var(f^​(x))=E[(f^​(x)−E(f^​(x)))2](1-3)
假设我们现在关心的是模型的均方误差 M S E ( f ^ ( x ) MSE(\hat f(x) MSE(f^​(x),它的定义以及分解过程为:
M S E ( f ^ ( x ) ) = E [ ( y − f ^ ( x ) ) 2 ] = E [ ( f ( x ) + ϵ − f ^ ( x ) ) 2 ] = E [ ( f ( x ) − f ^ ( x ) ) 2 + 2 ϵ ( f ( x ) − f ^ ( x ) ) + ϵ 2 ] = E [ ( f ( x ) − f ^ ( x ) ) 2 ] + 2 E ( ϵ ) E ( f ( x ) − f ^ ( x ) ) + E ( ϵ 2 ) = E [ ( ( f ( x ) − E ( f ^ ( x ) ) − ( f ^ ( x ) − E ( f ^ ( x ) ) ) ) 2 ] + 0 + σ ϵ 2 = E [ ( f ( x ) − E ( f ^ ( x ) ) ) 2 ] − 2 E [ ( f ( x ) − E ( f ^ ( x ) ) ) ( f ^ ( x ) − E ( f ^ ( x ) ) ) ] + E [ ( f ^ ( x ) − E ( f ^ ( x ) ) ) 2 ] + σ ϵ 2 = E ( B i a s ( f ^ ( x ) ) 2 ) − 2 E [ f ( x ) f ^ ( x ) − f ( x ) E ( f ^ ( x ) ) − E ( f ^ ( x ) ) f ^ ( x ) + E ( f ^ ( x ) ) E ( f ^ ( x ) ) ] + V a r ( f ^ ( x ) ) + σ ϵ 2 = B i a s ( f ^ ( x ) ) 2 + V a r ( f ^ ( x ) ) + σ ϵ 2 (1-4) \begin{aligned} MSE(\hat f(x))&=E\left[\left(y-\hat f(x)\right)^2\right]\\ &=E\left[\left(f(x)+\epsilon-\hat f(x)\right)^2\right]\\ &=E\left[\left(f(x)-\hat f(x)\right)^2+2\epsilon \left(f(x)-\hat f(x)\right)+\epsilon^2\right]\\ &=E\left[\left(f(x)-\hat f(x)\right)^2\right]+2E(\epsilon)E(f(x)-\hat f(x))+E(\epsilon^2)\\ &=E\left[\left(\left(f(x)-E(\hat f(x)\right)-\left(\hat f(x)-E(\hat f(x))\right)\right)^2\right]+0+\sigma_{\epsilon}^2\\ &=E\left[\left(f(x)-E(\hat f(x))\right)^2\right]-2E\left[\left(f(x)-E(\hat f(x))\right)\left(\hat f(x)-E(\hat f(x))\right)\right]+E\left[\left(\hat f(x)-E(\hat f(x))\right)^2\right]+\sigma_{\epsilon}^2\\ &=E(Bias(\hat f(x))^2)-2E\left[f(x)\hat f(x)-f(x)E(\hat f(x))-E(\hat f(x))\hat f(x)+E(\hat f(x))E(\hat f(x))\right]+Var(\hat f(x))+\sigma_{\epsilon}^2\\ &=Bias(\hat f(x))^2+Var(\hat f(x))+\sigma_{\epsilon}^2\\ \tag{1-4} \end{aligned} MSE(f^​(x))​=E[(y−f^​(x))2]=E[(f(x)+ϵ−f^​(x))2]=E[(f(x)−f^​(x))2+2ϵ(f(x)−f^​(x))+ϵ2]=E[(f(x)−f^​(x))2]+2E(ϵ)E(f(x)−f^​(x))+E(ϵ2)=E[((f(x)−E(f^​(x))−(f^​(x)−E(f^​(x))))2]+0+σϵ2​=E[(f(x)−E(f^​(x)))2]−2E[(f(x)−E(f^​(x)))(f^​(x)−E(f^​(x)))]+E[(f^​(x)−E(f^​(x)))2]+σϵ2​=E(Bias(f^​(x))2)−2E[f(x)f^​(x)−f(x)E(f^​(x))−E(f^​(x))f^​(x)+E(f^​(x))E(f^​(x))]+Var(f^​(x))+σϵ2​=Bias(f^​(x))2+Var(f^​(x))+σϵ2​​(1-4)
注意,上述最后一步的化简中,用到了这些隐含条件(下面的常量是指关于数据的常量):

  • E ( f ^ ( x ) ) E(\hat f(x)) E(f^​(x))是常量, f ( x ) f(x) f(x)是常量,因 此 B i a s ( f ^ ( x ) ) 此Bias(\hat f(x)) 此Bias(f^​(x))也是常量,且常量可以提到 E ( ) E() E()外面去

由此可见,均方误差是取决于偏差、方差和随机误差的,且后三者的绝对值(平方)越大,均方误差也越大,这也符合我们的一般直觉。

2. 偏差与方差的直观理解

图2.1 偏差和方差的图形化解释

图片来源http://scott.fortmann-roe.com/docs/BiasVariance.html
如上图所示,对于某个靶子而言,上面的每个点表示给定算法的情况下,每次更换不同的训练样本训练出不同的模型,对同一个测试样本进行预测的结果。
最理想的情况是左上角,此时偏差和方差都较小,因此模型的误差(例如前面提到的均方误差)较小;右上角是低偏差和高方差的情况,这体现出算法的输出结果不是很“稳定”,也即不同的数据训练出的模型,对同一样本的预测结果可能大相径庭;左下角是高偏差和低方差的情况,这体现出算法的输出结果虽然稳定但是与真实结果总存在一点偏差,类似于控制理论里面的静差;右下角是最糟糕的情况,偏差和方差都很大

3. 偏差、方差与欠拟合、过拟合的关系

结合上一章中的直观理解,偏差、方差与欠拟合、过拟合的关系其实呼之欲出了。

所谓欠拟合(underfitting),外在现象就是模型在训练集上和测试集上表现都不好。这就意味着,模型没有学习到数据中足够的信息,导致模型的输出与真实值存在较大偏差,也即高偏差。形象的比喻就是造狙击枪的车床有个明显的公差,导致造出来的狙击枪瞄准镜都往某个方向偏了一个角度,于是用这批狙击枪打靶都会网靶心某个方向偏移。

所谓过拟合(overfitting),外在现象就是模型在训练集上表现很好,但是在测试集上表现不好。这就意味着模型学习到了数据中的信息,但是学到的信息跟具体的训练数据强相关,缺乏举一反三、灵活变通的能力,导致模型的输出与真实值存在较大方差,也即高方差。形象的比喻就是学生只会背老师讲的题目模板,不论老师怎么教,只能记住老师教的那几个题。如果运气好,老师押中了考题,那么考得好;否则就考得差。

4. 欠拟合、欠拟合的产生原因及解决方案

前面讲到,出现欠拟合是因为模型没有学习到数据中的信息。造成这一结果的原因有:

  • 模型复杂度不够,具体来说就是特征项不够。例如男女性别分类时,只有身高这一维特征。
  • 正则化参数太大,导致将某些重要特征给抑制住了

对应的解决方法有:

  • 添加输入特征,例如男女性别分类时,引入体重、头发长度等特征。
  • 当输入数据的原始特征无法改变的时候,提高模型的特征抽取能力,“制造”出更丰富、有效的特征。例如引入多项式特征、卷积层、transformer结构等
  • 减小正则化参数

过拟合是因为模型泛化能力太差,具体原因有:

  • 输入特征过多,导致模型容易过拟合到某些特征上面,缺乏全局视野
  • 模型结构过于复杂,导致提取出了过多的特征
  • 训练数据不够多,没有覆盖完整测试集数据的分布空间
  • 训练集中噪声过大,导致模型学到了许多无用信息

对应的解决方法:

  • 进行特征筛选,减少输入特征数量
  • 控制模型复杂度,避免选用过于复杂的模型解决相对简单的问题
  • 在损失函数中引入L1/L2正则化,以减少某些不那么重要的特征的权重
  • 增大训练数据集,尤其是提高训练集的分布丰富度
  • 对训练数据进行数据增强,本质上和上一个方法是同样的效果
  • 对数据进行清洗,剔除异常点
  • 引入dropout,训练过程的一个技巧,某种程度上类似于正则化
  • early stop, 某种程度上类似于正则化

通俗理解误差、偏差、方差以及它们和过拟合、欠拟合之间的关系.相关推荐

  1. 初学SpringCloud:探讨一下为什么要使用微服务?,为什么要使用服务注册中心?怎样理解服务注册中心,服务提供者,服务调用者三者之间的关系?

    目录 1.本篇博客的背景 2.为什么要使用微服务? 3.为什么要使用服务注册中心 4.怎样理解服务注册中心,服务提供者,服务调用者三者之间的关系? 1.本篇博客的背景 我目前正在学习微服务的一些知识, ...

  2. 【吴恩达】机器学习作业ex5-->偏差与方差(过拟合/欠拟合)Python

    一.前言 这次的作业主要目的是研究偏差和方差也就是过拟合和欠拟合的关系,数据分别是水位的变化来预测大坝流出的水量,其实和房价预测相差不大,要说区别就是这次将X分为了三部分,分别是训练集,交叉集,测试集 ...

  3. 概率统计极简入门:通俗理解微积分/期望方差/正态分布前世今生(23修订版)

    原标题:数据挖掘中所需的概率论与数理统计知识(12年首次发布,23年重编公式且反复改进) 修订背景 本文初稿发布于12年年底,十年后的22年底/23年初ChatGPT大火,在写ChatGPT通俗笔记的 ...

  4. quartz源码分析之深刻理解job,sheduler,calendar,trigger及listener之间的关系

    org.quartz包 包org.quartz是Quartz的主包,包含了客户端接口. 其中接口有: Calendar接口: 定义了一个关联Trigger可能(或者不可能)触发的时间空间.它没有定义触 ...

  5. 深入理解nvme协议之二:nvme 协议重点数据结构之间的关系

    Physical Region Range(PRP entry) 描述一段物理空间的其实地址和长度,最重要的字段包括: 起始地址(page base address) 偏移大小(offset) 具体如 ...

  6. 如何理解过拟合=高方差、欠拟合=高偏差

    欠拟合=高偏差还好理解一些,一直不太明白过拟合和高方差有什么关系,那么我们首先就要理解各种 '差' 的定义 定义: 我们评价一个模型好不好,是通过测试集的数据来评价的,而不是训练集或者交叉验证集,如果 ...

  7. 【机器学习】——偏差方差,欠拟合过拟合

    这一篇我们就是介绍机器学习中误差的来源--模型的偏差与方差 偏差与方差的直观理解 我们首先从直观上来理解一下这两个词: 偏差 直观上我们感觉偏差就是预测值与真实值的偏离程度 方差 大家在统计学中应该都 ...

  8. 机器学习之过拟合与欠拟合以及偏差-方差分解

    1.过拟合 所谓过拟合就是:把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致训练出的模型其泛化能力降低,这就是过拟合. 如何解决? 1)Early stopping Earl ...

  9. 14. 偏差-方差权衡

    2.5 偏差-方差权衡 在根据训练数据拟合出预测函数后,通过分析该函数在测试实例处的损失期望值,可以获得关于预测误差的重要知识.下面基于叠加模型,对回归预测函数进行计算,其结论对分类同样适用. 设某回 ...

最新文章

  1. 阿里技术人的第一节课
  2. 妙用QTP F1帮助功能
  3. spring boot中修改默认端口号
  4. 五本必读的深度学习圣经书籍,入门 AI 从 深度学习 开始
  5. Intent传递数据全解
  6. loj 300 [CTSC2017]吉夫特 【Lucas定理 + 子集dp】
  7. Android 调用12306接口,GitHub - AndroidyxChen/loading-12306: 仿PC端12306的刷新loading的自定义view...
  8. 【转】c#中@的3种作用
  9. ibm服务器 p5 硬盘,IBM虚拟化实战之p5服务器逻辑分区解读
  10. HDOJ 1036 Average is not Fast Enough!
  11. Java实现Base64编码和解码的方式
  12. JavaScript学习(十一)—selected属性、checked属性、class属性的操作
  13. 免费素材下载:200个超棒的矢量图标下载
  14. linux sd启动盘制作工具,制作Mini Linux U盘启动盘
  15. 组队训练3回放 ——hnqw1214
  16. 【SQL】Mysql常用sql语句记录
  17. dubbo源码 -- 服务导出
  18. 在qemu下实战linux内核
  19. 在Android中Unity3D透明背景的实现
  20. bind服务12---分离解析

热门文章

  1. Opencv中的MSER特征
  2. ipdb调试常用的命令
  3. javaScript 这些常用的代码块你知道多少?
  4. 射频功放学习之ADS设计单频点功率放大器
  5. BPTT-应用于简单的循环神经网络
  6. C语言 char*和char[]用法
  7. Java 多线程深入浅出
  8. 003-驾照考试,总结
  9. 全球科技巨头加码云游戏,谁能分得千亿市场的一杯羹?
  10. Could not Open Install.Log File解决方法