机器学习中的方差与偏差

devtools/2025/1/19 22:38:20/

文章目录

  • 方差与偏差
    • 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. 会在训练过程中改变。


http://www.ppmy.cn/devtools/151934.html

相关文章

汽车免拆诊断案例 | 2007 款法拉利 599 GTB 车发动机故障灯异常点亮

故障现象  一辆2007款法拉利599 GTB车,搭载6.0 L V12自然吸气发动机(图1),累计行驶里程约为6万km。该车因发动机故障灯异常点亮进厂检修。 图1 发动机的布置 故障诊断 接车后试车,发动机怠速轻微抖动,…

生产环境中常用的设计模式

生产环境中常用的设计模式 设计模式目的使用场景示例单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点- 日志记录器- 配置管理器工厂方法模式定义一个创建对象的接口,让子类决定实例化哪个类- 各种工厂类(如视频游戏工厂模式创…

C#高级:用Csharp操作鼠标和键盘

一、winform 1.实时获取鼠标位置 public Form1() {InitializeComponent();InitialTime(); }private void InitialTime() {// 初始化 Timer 控件var timer new System.Windows.Forms.Timer();timer.Interval 100; // 设置为 100 毫秒,即每 0.1 秒更新一次timer.…

《机器学习》——SVD(奇异分解)降维

文章目录 SVD基本定义SVD降维的步骤SVD降维使用场景SVD 降维的优缺点SVD降维实例导入所需库定义SVD降维函数导入图像处理图像处理图像打印降维结果并显示处理后两个图像的对比图 SVD基本定义 简单来说就是,通过SVD(奇异值分解)对矩阵数据进行…

基于 Python 和 Django 的课程管理系统设计与实现

标题:基于 Python 和 Django 的课程管理系统设计与实现 内容:1.摘要 摘要:本文介绍了基于 Python 和 Django 的课程管理系统的设计与实现。文章首先阐述了课程管理系统的背景和意义,接着详细描述了系统的设计与实现过程,包括系统架构、功能模…

nginx 配置ssl_dhparam好处及缺点

ssl_dhparam 是 Nginx 配置指令之一,用于配置 Diffie-Hellman 参数,这是一种用于密钥交换的加密算法。配置 Diffie-Hellman 参数可以提高 SSL/TLS 的安全性。 以下是 ssl_dhparam 的优点和缺点: 优点: 提高 SSL/TLS 安全性&…

6、原来可以这样理解C语言_函数(1/8)函数的概念

目录 一、函数的概念 一、函数的概念 数学中我们其实就⻅过函数的概念,⽐如:⼀次函数 ykxb ,k和b都是常数,给⼀个任意的x,就 得到⼀个y值。 其实在C语⾔也引⼊函数(function)的概念&#xff0c…

StyleGaussian: Instant 3D Style Transferwith Gaussian Splatting 论文解读

目录 一、概述 二、相关工作 1、辐射场 2、3D编辑 3、风格迁移 三、StyleGaussian 1、特征嵌入 2、风格迁移 3、解码 四、实验 1、不同backbone下的量化和定性指标 2、解码器设计上的测试 3、内容损失平衡 4、风格平滑插值 一、概述 提出了StyleGaussian&#…