机器学习中的方差与偏差

文章目录

  • 方差与偏差
    • 1.1 数据
      • 1.1.1 数据的分布
      • 1.1.2 拟合
    • 1.2 方差与偏差
      • 1.2.1 泛化误差的拆分
      • 1.2.2 理解方差偏差
    • 1.3 方差-偏差trade-off
      • 1.3.1 方差-偏差trade-off
      • 1.3.2 方差与偏差诊断
    • 1.4 降低策略
      • 1.4.1 噪声
      • 1.4.2 高偏差
      • 1.4.3 高方差

方差与偏差

1.1 数据

1.1.1 数据的分布

  • 我们考虑一个简单的多项式回归问题,假设存在一个二次分布函数 f ( x ) f(x) f(x) 如下图所示3

    我们需要从中抽取一些(图中只画了5个,假设足够多)数据来进行我们的回归任务4

    而现实中的数据往往都包含一定的噪声 ,所以我们抽样过程,也需要模拟这一步,我们用 y y y 表示我们抽样出的数据点的真实值 y t r u e y_{true} ytrue , 另 $y = f(x) + \epsilon $ ,其中 ϵ \epsilon ϵ 为我们自己加上的噪声,抽样完成的点可以如下图所示:5

    好了,现在我们可以抛弃 f ( x ) f(x) f(x) (实际中我们也只知道 y 而不知道y的分布,或者说我们通常所说的模型$$ 6

  • 总结下即:从分布函数 f ( x ) f(x) f(x) 中,以 y = f ( x ) + ϵ y=f(x) + \epsilon y=f(x)+ϵ 采样 N N N个样本数据 ,用D表示数据,则
    D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } = { ( x i , y i ) } i = 1 N \begin{aligned} \mathop{D} &= \{ (x_1,y_1),(x_2,y_2),...,(x_n,y_n) \} \\ &=\{(x_i,y_i)\}_{i=1}^{N} \end{aligned} D={(x1,y1),(x2,y2),...,(xn,yn)}={(xi,yi)}i=1N
    其中 ϵ \epsilon ϵ 服从与均值为 0,方差为 σ 2 \sigma^2 σ2 的正态分布
    ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim \mathop{N}(0,\sigma^2) ϵN(0,σ2)
    7


1.1.2 拟合

  • 如下图,我们分别使用不同的多项式来拟合,怎样判断哪个模型的好坏呢?8

    备注:给定 n + 1 n+1 n+1 个数据点,存在唯一一个最高阶为 n n n 的多项式通过全部数据点。


1.2 方差与偏差

1.2.1 泛化误差的拆分

  • 从分布函数 f ( x ) f(x) f(x) 中,我们以 y = f ( x ) + ϵ y=f(x) + \epsilon y=f(x)+ϵ 采样 N N N个样本数据 D = { ( x i , y i ) } i = 1 N D=\{(x_i,y_i)\}_{i=1}^{N} D={(xi,yi)}i=1N ,设我们学习到的多项式模型用 f ^ ( x ) \hat f (x) f^(x) 表示,损失函数使用Loss 使用MSE
    M S E = ( y − f ^ ( x ) ) 2 \mathop{MSE} = \left(y-\hat f(x)\right)^2 MSE=(yf^(x))2
    为了方便公式推导,使用 f f f 代替 f ( x ) f(x) f(x),使用 f ^ \hat f f^ 代替 f ^ ( x ) \hat f(x) f^(x) ,

    则我们的泛化误差(期望风险 E D E_D ED)表示为
    E D = E D [ L o s s ] = E [ ( y − f ^ ) 2 ] = E [ ( f + ϵ − f ^ ) 2 ] = E [ ( f + ϵ − f ^ + E [ f ^ ] − E [ f ^ ] ) 2 ] = E [ ( ( f − E [ f ^ ] ) + ϵ − ( f ^ − E [ f ^ ] ) ) 2 ] = E [ ( f − E [ f ^ ] ) 2 + ϵ 2 + ( f ^ − E [ f ^ ] ) 2 ] + E [ 2 ⋅ ( f − E [ f ^ ] ) ⋅ ϵ − 2 ⋅ ( f − E [ f ^ ] ) ⋅ ( f ^ − E [ f ^ ] ) − 2 ⋅ ( f ^ − E [ f ^ ] ) ⋅ ϵ ] = E [ ( f − E [ f ^ ] ) 2 + ϵ 2 + ( f ^ − E [ f ^ ] ) 2 ] = B i a s [ f ^ ] 2 + V a r [ f ^ ] + σ 2 \begin{aligned} E_D & = E_D[Loss] \\ &=E[(y-\hat f)^2] \\ &=E[(f+\epsilon-\hat f)^2] \\ &=E[\left(f+\epsilon-\hat f + E[\hat f] - E[\hat f] \right)^2]\\ &=E[\left((f- E[\hat f])+\epsilon-(\hat f - E[\hat f]) \right)^2]\\ &=E\left[(f-E[\hat f])^2 + \epsilon^2 + (\hat f - E[\hat f])^2 \right]\\ &+E\left[ 2\cdot(f- E[\hat f])\cdot\epsilon-2\cdot(f- E[\hat f])\cdot(\hat f - E[\hat f])-2\cdot(\hat f - E[\hat f])\cdot\epsilon \right] \\ &=E\left[(f-E[\hat f])^2 + \epsilon^2 + (\hat f - E[\hat f])^2\right]\\ &=Bias[\hat f]^2 +Var[\hat f] + \sigma^2 \end{aligned} ED=ED[Loss]=E[(yf^)2]=E[(f+ϵf^)2]=E[(f+ϵf^+E[f^]E[f^])2]=E[((fE[f^])+ϵ(f^E[f^]))2]=E[(fE[f^])2+ϵ2+(f^E[f^])2]+E[2(fE[f^])ϵ2(fE[f^])(f^E[f^])2(f^E[f^])ϵ]=E[(fE[f^])2+ϵ2+(f^E[f^])2]=Bias[f^]2+Var[f^]+σ2
    其中:

    1. 第四步中是同时加上和减去一个 E [ f ^ ] E[\hat f] E[f^]
    2. ϵ ∼ N ( 0 , σ 2 ) → E [ ϵ ] = 0 , V a r [ ϵ ] = σ 2 \epsilon \sim N(0,\sigma^2)\to E[\epsilon] = 0,Var[\epsilon] = \sigma^2 ϵN(0,σ2)E[ϵ]=0,Var[ϵ]=σ2
  • 总结就是:使用以MSE为损失函数,其泛化误差可以分解为由偏差、方差和数据本身噪音的组合
    E D = B i a s [ f ^ ] 2 + V a r [ f ^ ] + σ 2 E_D=Bias[\hat f]^2 +Var[\hat f] + \sigma^2 ED=Bias[f^]2+Var[f^]+σ2
    其中,噪声在统计上市无法被模型减少的,所以主要关注组成泛化误差的两个主要部分

    1. 由偏差bias导致的误差
    2. 由方差vars导致的误差

1.2.2 理解方差偏差

  • 上面从数学公式的角度推导出以MSE为损失函数,其泛化误差可以分解为由偏差、方差和数据本身噪音的组合,现在以图形的方式更为一般的描绘方差、偏差、泛化误差之间的关系(图中没法打出 f ^ \hat f f^ ,用 f ∗ f* f表示 )image-20230719210842436

    1. 偏差(Bias) : 偏差衡量了模型 f ^ \hat f f^ 的 预测值与 实际值 f ( x ) f(x) f(x) 之间的偏离关系(图中 y = f ( x ) y=f(x) y=f(x) 未考虑噪声),偏差越大,越偏离真实数据。
    2. 方差(vars):模型 f ^ \hat f f^ 的 预测值的方差,描述预测值的变化范围,离散程度,方差越大,预测值的分布越散。
  • 下面是4种方差和偏差的组合1

    1. 低方差vs低偏差 : 这是最好的情况
  1. 低方差vs高偏差:通常出现在刚开始训练时
    3. 高方差vs低偏差:一般最常见的过拟合情况,模型较为贴合训练集,导致其泛化能力差
    4. 高方差vs高偏差:这是最坏的情况,意味着不仅准确度低,而且数据差异还大
  • 理想情况下,我们希望得到一个不论在训练集还是未知测试集上都表现非常好的模型,不幸的是我们通常不可能完全做到这两件事。以上面回归的例子来说,我们分别使用不同的多项式来拟合,每个不同的多项式即是一个模型,不同模型的选择其实也是在方差和偏差之间做权衡9

    通过方差和偏差的诊断可以帮助弄清如何提升模型的表现,多项式次数越高,代表模型越复杂,可以学到的东西就越多,如最后一个4阶多项式image-20230731232520461

    以图中的5个数据点举例,有且只有唯一个四阶多项式能经过这5个点,这样就意味着该模型将整体数据已经全部记住,那么如果我们来了一个新的数据就会导致模型完全无法识别出。

  • 事实上,通常情况下模型的训练误差和泛化误差之间的关系,以及泛化误差与方差偏差之间的关系可以由以下两张图表示12

    将这两张图对应到多项式回归的例子中则是,我们给定了数据 D ,期望利用多项式回归去学习出一个曲线 f ^ \hat f f^,那么此时我们可以通过拟合多项式的次数来控制学习曲线的复杂度了(理想状态下):

    1. 刚开始可以尝试一阶线性方程,此时学习器的拟合能力弱,学习曲线预测值和我们真实值之间的差距较大,此时偏差主导了泛化误差,而此时训练数据的扰动不足以使学习器产生显示变化;
    2. 随着我们将多项式次数增加到二阶,学习器的拟合能力增强了,意味着学习曲线预测值和我们真实值之间的差距在逐渐拉小,即偏差在下降,此时的方差会逐渐上升并开始影响泛化误差;
    3. 最后我们将多项式的次数增加到四阶,则我们学到了唯一一条穿过每个点的4阶多项式曲线(假设之后5个数据点),此时学习器相当于记住了整个数据集,学习曲线的预测值和真实值完美重叠,偏差为0,但是这时候若有个新的数据进来,我们的学习曲线预测值会发生显著的变化。

    可以总结为:

    1. 多项式次数越高,模型越复杂,模型越复杂,在训练集上的训练误差越低(甚至可以记住整个数据集,即训练误差降到0);
    2. 随着训练误差降低(模型变复杂),泛化误差先上升后降低;
    3. 偏差会随着模型复杂度增高而降低,方差会随着模型复杂度增高而上升

1.3 方差-偏差trade-off

1.3.1 方差-偏差trade-off

  • 在泛化误差的拆分公式部分,得出要关注组成泛化误差的两个主要部分

    1. 由偏差bias导致的误差
    2. 由方差vars导致的误差

    而通过方差、偏差与泛化误差变化图可以看出,偏差与方差并非同增同涨的关系,通常情况下我们都需要进行方差和偏差的权衡,意味着我们必须减少其中一项而增加另一项,对应于我们的多项式回归问题来说,训练误差、泛化误差之间的关系图如下image-20230725201353547

    同时我们可以确定(权衡)相对较好的模型 2


1.3.2 方差与偏差诊断

  • 从上述图我们还可以得出一些比较有用的经验法则,最简单的判断模型是受方差还是受偏差影响较多的办法是:

    1. 如果你的模型在训练集上表现非常好,但是在测试集上却非常糟糕,这是典型的过拟合问题,是方差过大问题
    2. 若你的模型在训练集、测试集上都表现不好,这是典型的欠拟合问题,是偏差过大问题

    欠拟合 = 偏差问题 过拟合 = 方差问题 欠拟合=偏差问题 \\ 过拟合=方差问题 欠拟合=偏差问题过拟合=方差问题

  • 再次总结下方差问题与偏差问题的特征

    • 高偏差问题

      1. 高训练误差
      2. 高测试误差
    • 高方差问题

      1. 低训练误差
      2. 特别高测试误差

      image-20230719211616754

  • 诊断之后,我们需要做什么呢?当然是想办法解决,当然解决是不可能解决的,真如之前说过的,偏差和方差是有冲突的,只能尽量降低影响,降低的方法汇总参考下图image-20230731232235112


1.4 降低策略

1.4.1 噪声

  • 如上述采样 y = f ( x ) + ϵ y=f(x) + \epsilon y=f(x)+ϵ 中,噪声 ϵ \epsilon ϵ 在统计意义上是无法被消除的,但是可以从数据的采集,清洗,数据预处理等方面提升数据的质量来达到降低数据噪声的目的


1.4.2 高偏差

  • 这里将重点放在增加模型复杂度

    • 让相同的算法变得更加复杂,通常从模型结构入手。 例如,
      1. 回归模型可以用更高阶多项式
      2. 决策树可以有更多的深度
    • 更改为更复杂的算法/模型。 例如,
      1. 将回归算法更改为神经网络
      2. 将决策树更改为随机森林
  • 然而,增加模型复杂度并不一定是好事,我们可能会经历下面的困境

    1. 模型越复杂也意味着越多计算开销(例如单个决策树与 100 棵树的随机森林)
    2. 更多的模型复杂性依赖于更复杂的模型特征工程
    3. 更复杂通常意味着相反解释能力。 当我们选择更复杂的模型,我们的模型因为更难解释,因为大多数复杂的模型都很难被解释
    4. 更加复杂可能会增加以下风险:过拟合

1.4.3 高方差

  • 获取更多的数据

    如果有足够的计算能力来训练更多的数据,获取更多的数据总是最好的选择,但是获取更多的数据通常是既昂贵又耗时

  • 使用正则化防止过拟合

    在分类或者回归问题中,正则化项通常是指在损失函数中添加额外项的过程,通常是为了引入对更简单模型的偏好(防止模型过度复杂)。

  • 减少特征数量

    过拟合的主要解决方案之一是减少特征数量

    1. 手动选择需要保留的特征(前向选择,后向选择,方差过滤、互信息、F检验、相关性等过滤法)
    2. 自动选择要 保留或扔掉的特征(embedding,warapper等)

    缺点:在丢弃特征的过程中,可能会有有用的信息遗失

  • 超参数调优

    一个简单的算法与良好的调整参数往往会比一个不充分调参的复杂算法产生的模型效果更好,超参数可以控制模型的复杂性(正则化),可以控制训练算法的行为,而超参数调整是为算法寻找最优超参数的过程,常用的超参数调优算法有

    1. 网格搜索
    2. 对半搜索
    3. 随机搜索
    4. 贝叶斯优化

    那么什么是参数和超参数的区别呢?

    • 超参数:超参数是在训练算法开始之前指定的,无法优化 在训练算法本身中。它们是模型的外部参数。有一下的特点:
      1. 通常用于帮助估计模型参数
      2. 无法从数据中估计
      3. 它们通常由从业者指定
      4. 通常不会在训练过程中改变。
    • 模型参数:模型参数取决于你用什么算法,用于拟合数据,它们是模型的外部参数。有以下的特点:
      1. 模型在进行预测时需要它们
      2. 它们是从数据中估计或学习的
      3. 它们通常不由从业者手动设置
      4. 值通常由学习算法选择,如线性回归或神经网络的权重
      5. 会在训练过程中改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Weblogic - General - 弱口令 任意文件读取漏洞

0x01:漏洞简介 首先需要说明,本文并不是介绍了 Weblogic 某一 CVE 漏洞,而是提供了一种通用的测试思路。 0x0101:弱口令漏洞 弱口令漏洞主要是由于用户安全意识淡薄,为了便于记忆,设置了强度过低的密码&…

C#中的语句

C#提供了各式各样的语句,大多数是由C和C发展而来,当然,在C#中做了相应修改。语句和表达式一样,都是C#程序的基本组成部分,在本文我们来一起学习C#语句。 1.语句 语句是构造所有C#程序的过程构造块。在语句中可以声明…

VLAN基础理论

VLAN V:Virtual(虚拟) LAN ——局域网 VLAN ——虚拟局域网(虚拟广播域:交换机和路由器协同工作后,将原来的一个广播域,逻辑上切分为多个。) VLAN的配置我们基于以下拓扑进行: PC1-4的IP地址依次为192.168.1.1-192.168…

基于SpringBoot的健身房管理系统【源码+文档+部署讲解】

系统介绍 基于SpringBootVue实现的健身房管理系统采用前后端分离架构方式,系统设计了管理员、会员、员工三种角色,系统实现了用户登录与注册、个人中心、会员管理、员工管理、会员卡管理、会员卡类型管理、教练信息管理、解聘管理、健身项目管理、指导项…

C++ 模拟真人鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统

搭建一个基于Spring Boot的校园台球厅人员与设备管理系统可以涵盖多个功能模块,例如用户管理、设备管理、预约管理、计费管理等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的系统。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …

Langchain+FastApi+Vue前后端Ai对话(超详细)

一、引入 首先可以先看下作者的文章 FastApi相关文章:创建最简单FastApi的项目Vue相关文章:最简单的aixos二次封装Langchain相关文章:如何使用LangSmith跟踪deepseek模型 二、后端搭建 1 项目文件结构 routers:存放api接口se…

图像去雾数据集的下载和预处理操作

前言 目前,因为要做对比实验,收集了一下去雾数据集,并且建立了一个数据集的预处理工程。 这是以前我写的一个小仓库,我决定还是把它用起来,下面将展示下载的路径和数据处理的方法。 下面的代码均可以在此找到。Auo…

Java中json的一点理解

一、Java中json字符串与json对象 1、json本质 json是一种数据交换格式。 常说的json格式的字符串 > 发送和接收时都只是一个字符串,它遵循json这种格式。 2、前后端交互传输的json是什么? 前后端交互传输的json都是json字符串 比如:…

React实现拖拽特效

前言 最近,我看到一个工程师的个人网站上,采用了拖拽作品集的互动特效,既有趣又吸引眼球。经过一些研究,我发现其实借助一些现成的套件,就能轻松实现这样的效果。今天就带大家一起看看,如何通过 Framer Mo…

leetcode904-水果成篮

leetcode 904 时间复杂度:O(n) 空间复杂度:O(1) 之前发布了一个滑动窗口的题目解答思路,参考博文:长度最小的子数组 本题也是基于滑动窗口的一个扩展题,主要解决方法是利用滑动窗口哈希表 var totalFruit function…

线性代数概述

矩阵与线性代数的关系 矩阵是线性代数的研究对象之一: 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,是线性代数中的核心概念之一。矩阵的定义和性质构成了线性代数中矩阵理论的基础,而矩阵运算则简洁地表示和…

李宏毅机器学习HW1: COVID-19 Cases Prediction

Kaggle数据集和提交链接 特征选择(主要修改地方) 在sample code的基础上主要修改了Select_feat选择特征函数。 首先,因为数据集中的第一列是id,先在raw_x_train,raw_x_valid,raw_x_test中都去掉这一列。其…

owasp SQL 注入-03 (原理)

1: 先看一下注入界面: 点submit 后,可以看到有语法报错,说明已经起作用了: 报如下的错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1 2:…

VD:生成a2l文件

目录 前言Simulink合并地址 ASAP2 editor 前言 我之前的方法都是通过Simulink模型生成代码的过程中顺便就把a2l文件生成出来了,这时的a2l文件还没有地址,所以紧接着会去通过elf文件更新地址,一直以为这是固定的流程和方法,今天无…

Navicat Premium 数据可视化

工作区,数据源以及图表 数据可视化是使用可视化组件(例如图表,图形和地图)的信息和数据的图形表示。 数据可视化工具提供了一种可访问的方式,用于查看和理解数据中的趋势,异常值和其他模式。 在Navicat中&…

设置 Git 默认推送不需要输入账号和密码【Ubuntu、SSH】

如何设置 Git 默认推送不需要输入账号和密码 在使用 Git 管理代码时,许多开发者会遇到每次推送(push)或拉取(fetch)代码时都需要输入 GitHub 或 GitLab 等远程仓库的账号和密码的情况。虽然设置了用户名和电子邮件信息…

TCP Window Full是怎么来的

wireshark查看包时,会看到TCP Window Full,总结下它的特点: 1. Sender会显示 TCP Window Full 2. “Sender已发出,但,Receiver尚未ack的字节”,即Sender的 bytes in flights 3. Sender的 bytes in fligh…

PyTorch框架——基于WebUI:Gradio深度学习ShuffleNetv2神经网络蔬菜图像识别分类系统

第一步:准备数据 蔬菜数据集,英文为Vegetable。 train 目录下有15000 张图片。 共十五种植物的幼苗图片集,分别为classes [Bean, Bitter_Gourd, Bottle_Gourd, Brinjal, Broccoli, Cabbage, Capsicum, Carrot, Cauliflower, Cucumber, Pa…

WPS数据分析000001

目录 一、表格的新建、保存、协作和分享 新建 保存 协作 二、认识WPS表格界面 三、认识WPS表格选项卡 开始选项卡 插入选项卡 页面布局选项卡 公式选项卡 数据选项卡 审阅选项卡 视图选项卡 会员专享选项卡 一、表格的新建、保存、协作和分享 新建 ctrlN------…