Bias-Variance Tradeoff (权衡偏差与方差)

2023-10-17 00:59

本文主要是介绍Bias-Variance Tradeoff (权衡偏差与方差),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:https://blog.csdn.net/qq_30490125/article/details/52401773


对学习算法除了通过实验估计其泛化性能,我们还希望了解“为什么”具有这样的性能。“偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。


偏差和方差

理解偏差和方差这两个不同来源导致的误差可以帮助我们更好得拟合数据来得到更为精确的模型。

概念性定义


  • 由偏差引起的误差:我们将模型的期望(或平均)预测和我们正在试图预测正确值之间的差定义为偏差。当然,如果你只能有一个模型,在谈论期望或平均预测值可能看起来有点怪。但是,想象一下,我们可以多次重复整个建模过程:每次收集新的数据来拟合一个新的模型。由于数据集获取中的一些随机性,我们拟合的模型将具有一定的预测范围。
  • 由方差引起的误差:我们将模型之间的多个拟合预测之间的偏离程度定义为方差。同样,想象你可以重复多次整个建模过程。
这里写图片描述

这是一个曲线拟合的问题,对同分布的不同的数据集进行了多次的曲线拟合,左边表示方差,右边表示偏差,绿色是真实值函数。ln λ 表示模型的复杂程度,这个值越小,表示模型的复杂程度越高。

图形化定义

我们可以使用靶心图来图形化定义偏差和方差。试想一下,靶心就是我们要预测的真实值。命中的点离靶心越远,我们的预测结果越糟糕。试想一下,我们可以重复我们整个建模过程中独立得得到多个命中点的结果。每个命中都是我们模型的一次独立预测。有时,我们的预测结果会非常好,命中点靶心都集中在靶心附近;而有时,我们的命中点偏离靶心。这些不同的情况造成了对靶心的命中散布。

我们可以绘制代表高低偏差和方差的组合四种不同的组合分布图。
这里写图片描述

数学定义:

我们定义需要预测的真实结果Y,与其对应的自变量X(训练样本),之间有这样的关系:
Y = f(X) + ϵ (我们认为ϵ满足正态分布ϵ∼N(0,σϵ) )’

令yD为x在测试样本中的值,y为真实的值。

有可能出现噪音使得yD != y
为了方便讨论,这里假定E[ yD - y ] = 0

假设,fD(x)为训练集X上学得模型f在x上的预测输出,学习算法的期望预测为:
fExpectedD(x) = E[ fD(x) ]

统计学习中有一个重要概念叫做residual sum-of-squares:
这里写图片描述
RSS看起来是一个非常合理的统计模型优化目标。但是考虑K-NN的例子,在最近邻的情况下(K=1),RSS=0,是不是KNN就是一个完美的模型了呢,显然不是,KNN有很多明显的问题,比如对训练数据量的要求很大,很容易陷入维度灾难中。

KNN的例子说明仅仅优化RSS是不充分的,因为针对特定训练集合拟合很好的model,并不能说明这个model的泛化能力好,而泛化能力恰恰又是机器学习模型的最重要的要求。真正能说明问题的不是RSS,因为它只是一个特定训练集合,而是在多个训练结合统计得出的RSS的期望,MSE(mean squared error),即期望泛化误差。

基于假设,我们可以得到关于测试集x的MSE(mean squared error):

MSE(x) = E[( fD(x) - yD)2]
MSE(x) = E[( fD(x) - fExpectedD(x) + fExpectedD(x) - yD)2]
MSE(x) = E[(fD(x) - fExpectedD(x) )2] + E[(fExpectedD(x) - yD)2] + E[2×(fD(x) - fExpectedD(x) )×( fExpectedD(x) - yD )]

第三项需要注意:由于训练集已知,所以这里的fExpectedD(x) - E[(fExpectedD(x) - yD)2]实际上是一个常数,可以拿到外部。
fD(x) - fExpectedD(x) 根据上面学习算法的期望预测的式子,可以知道其差值为0

MSE(x) = E[(fD(x) - fExpectedD(x) )2] + E[(fExpectedD(x) - yD)2]
MSE(x) = E[(fD(x) - fExpectedD(x) )2] + E[(fExpectedD(x) - y + y -
yD)2]
MSE(x) = E[(fD(x) - fExpectedD(x) )2] + E[(fExpectedD(x) - y)2] + E[(y - yD)]2 + 2 × E[(fExpectedD(x) - y) × (y - yD)]

噪声期望为0,因此最后一项为0

MSE(x) = E[(fD(x) - fExpectedD(x) )2] + (fExpectedD(x) - y)2 + E[(y - yD)]2

使用样本数相同的不同训练集产生的方差为:
var(x) = E[(fD(x) - fExpectedD(x) )2]

期望输出与真实值的差别称之为偏差,即:
bias2(x) = (fExpectedD(x) - y)2

噪声为:
ϵ2 = E[(y - yD)]2

MSE(x) = var(x) + bias2(x) + ϵ2

从上面的推导我们可以看出,期望泛化误差可以分解为方差,偏差与噪音之和。

最后一项,作为不可约项,是不可能从根本上进行消除。在给定任务的前提下,只需要考虑前面两项来优化模型即可。

小节:

偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了学习问题本省的难度。偏差-方差分解说明,泛化能力是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的,给定学习任务,为了取得好的泛化性能,需使偏差较小,即能够充分拟合数据,并使方差较小,使数据扰动产生的影响最小。
这里写图片描述

在一个实际系统中,Bias与Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上会提高模型的Variance,反之亦然。造成这种现象的根本原因是,我们总是希望试图用有限训练样本去估计无限的真实数据。当我们更加相信这些数据的真实性,而忽视对模型的先验知识,就会尽量保证模型在训练样本上的准确度,这样可以减少模型的Bias。但是,这样学习到的模型,很可能会失去一定的泛化能力,从而造成过拟合,降低模型在真实数据上的表现,增加模型的不确定性。相反,如果更加相信我们对于模型的先验知识,在学习模型的过程中对模型增加更多的限制,就可以降低模型的variance,提高模型的稳定性,但也会使模型的Bias增大。Bias与Variance两者之间的trade-off是机器学习的基本主题之一,机会可以在各种机器模型中发现它的影子。

权衡偏差与方差:

模型过于简单时,容易发生欠拟合(high bias);模型过于复杂时,又容易发生过拟合(high variance)。为了达到一个合理的 bias-variance 的平衡,此时需要对模型进行认真地评估。这里简单介绍一个有用的cross-validation技术K-fold Cross Validation (K折交叉验证),
这个方法将帮助我们获得模型关于泛化误差(generalization error)的可信的估计,所谓的泛化误差也即模型在新数据集上的表现。在训练数据上面,我们可以进行交叉验证(Cross-Validation)。
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,、我们便可获得 k 个模型及其性能评价。平均K次的结果或者使用其它结合方式,最终得到一个单一估测。

当K值大的时候, 我们会有更少的Bias(偏差), 更多的Variance。
当K值小的时候, 我们会有更多的Bias(偏差), 更少的Variance。

下图展示了 k=10 时的 k-fold 方法的工作流程。
这里写图片描述

先到这里,参考博客:http://scott.fortmann-roe.com/docs/BiasVariance.html

这篇关于Bias-Variance Tradeoff (权衡偏差与方差)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221877

相关文章

【深度学习 误差计算】10分钟了解下均方差和交叉熵损失函数

常见的误差计算函数有均方差、交叉熵、KL 散度、Hinge Loss 函数等,其中均方差函数和交叉熵函数在深度学习中比较常见,均方差主要用于回归问题,交叉熵主要用于分类问题。下面我们来深刻理解下这两个概念。 1、均方差MSE。 预测值与真实值之差的平方和,再除以样本量。 均方差广泛应用在回归问题中,在分类问题中也可以应用均方差误差。 2、交叉熵 再介绍交叉熵损失函数之前,我们首先来介绍信息

概率学 笔记一 - 概率 - 随机变量 - 期望 - 方差 - 标准差(也不知道会不会有二)

概率不用介绍,它的定义可以用一个公式写出: 事件发生的概率 = 事件可能发生的个数 结果的总数 事件发生的概率=\cfrac{事件可能发生的个数}{结果的总数} 事件发生的概率=结果的总数事件可能发生的个数​ 比如一副标准的 52 张的扑克牌,每张牌都是唯一的,所以,抽一张牌时,每张牌的概率都是 1/52。但是有人就会说了,A 点明明有四张,怎么会是 1/52 的概率。 这就需要精准的指出

阿里巴巴数学竞赛成绩未公布:背后的权衡与期待

文 | 头部财经首席评论员白立新 发布 | 头部财经 top168.com 导语:2024 年阿里巴巴数学竞赛成绩迟未公布,引发广泛猜测。中专生姜萍的表现备受瞩目,达摩院陷入两难困境。这场竞赛结果的公布,关乎多方利益与社会影响,究竟何时能有定论? 在当今数字化、科技驱动的时代,数学作为基础学科的重要性愈发凸显。阿里巴巴举办的数学竞赛,本应是一场智慧与才华激烈碰撞的盛宴,然而今年的竞

自控原理-传递函数(闭环 扰动 偏差 前馈 复合 顺馈)

都知道闭环传递函数定义为:G1·G2/(1+G1·G2·H) 但是当碰到复杂的系统,比如复合顺馈,前馈扰动等,就不知道分子到底要不要乘上G2了。 这个公式是如何推导出来的,今天看到一个公式图片: 过程非常详细。 由此我也分别针对: 闭环扰动系统的传递函数和偏差传递函数问题 前馈扰动系统的误差分析 复合顺馈系统的误差分析 这三类问题给出了相应的解答方案。 闭环扰动系统的

方差(Variance) 偏差(bias) 过拟合 欠拟合

机器学习中方差(Variance)和偏差(bias)的区别?与过拟合欠拟合的关系?   (1)bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。 低偏差和高方差(对应右上图)是使得模型复杂,增加了模型的参数,这样容易过拟合。 这种情况下,形象的讲,瞄的很准,但手不一定稳。 (2)varience描述的是样本上训练出来的模型

Java后端服务端渲染与客户端渲染:SSR与CSR的权衡

Java后端服务端渲染与客户端渲染:SSR与CSR的权衡 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 服务端渲染(SSR)与客户端渲染(CSR) 在Web应用开发中,服务端渲染(SSR)和客户端渲染(CSR)是两种主要的页面渲染方式,它们各自有不同的优势和适用场景。 服务端渲染(SSR) 服务端渲染指的是在服务器上生成完整的HTML内容,然后将其发

NumPy(五):数组统计【平均值:mean()、最大值:max()、最小值:min()、标准差:std()、方差:var()、中位数:median()】【axis=0:按列运算;axis=0:按列】

统计运算 np.max()np.min()np.median()np.mean()np.std()np.var()np.argmax(axis=) — 最大元素对应的下标np.argmin(axis=) — 最小元素对应的下标 NumPy提供了一个N维数组类型ndarray,它描述了 相同类型 的“items”的集合。(NumPy provides an N-dimensional array

从一到无穷大 #34 从Columnar Storage Formats评估到时序存储格式的设计权衡

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言Parquet / ORC功能与结构对比差异Indexes and Filters压缩影响 TsFile总结 引言 随着 Parquet,ORC,TsFile等开源存储格式的发展,各家时序厂商的压缩

使用注解反射与代码生成技术:Java开发中的选择与权衡

在Java开发中,我们经常需要选择合适的技术来实现特定的功能。两种常见的方法是使用注解(Annotation)和反射(Reflection),以及代码生成技术。这两种方法各有优缺点,适用于不同的场景。本文将详细讨论它们的特点、应用场景,以及如何根据项目需求做出最佳选择。 一、注解和反射 注解是Java语言中的一种元数据机制,允许开发者在代码中嵌入描述性信息。这些信息可以在编译时或运行时被工具和

容器编排工具的选择:Kubernetes(K8s)与 K3s 的权衡与实践|Kubernetes|K3s|容器编排|资源受限环境

目录 1. 什么是 Kubernetes(K8s)? 2. 什么是 K3s? 3. K8s 与 K3s 的核心区别 3.1 架构上的区别 3.2 功能上的差异 3.3 性能与资源使用 4. K8s 与 K3s 的适用场景分析 4.1 资源受限环境 4.2 大规模集群 4.3 开发与测试环境 5. 如何在本地环境中使用 K3s 进行学习和测试 5.1 K3s 的安装与基本操作