监督式机器学习算法通过偏差-方差权衡的视角来理解最为恰当。
在本文中,您将了解偏差-方差权衡,以及如何使用它来更好地理解机器学习算法,并提高数据上的性能。
开始您的项目,请参阅我的新书《精通机器学习算法》,其中包含分步教程和所有示例的Excel电子表格文件。
让我们开始吧。
- 更新于2019年10月:移除了参数化/非参数化模型方面的讨论(感谢Alex)。

机器学习中偏差-方差权衡的温和介绍
照片由 Matt Biddulph 拍摄,部分权利保留。
偏差和方差概述
在监督式机器学习中,算法从训练数据中学习模型。
任何监督式机器学习算法的目标都是在给定输入数据 (X) 的情况下,最好地估计输出变量 (Y) 的映射函数 (f)。映射函数通常被称为目标函数,因为它是给定的监督式机器学习算法旨在逼近的函数。
任何机器学习算法的预测误差都可以分解为三个部分
- 偏差误差
- 方差误差
- 不可约减误差
无论使用何种算法,不可约减误差都无法减小。它是由所选问题框架引入的误差,可能是由于影响输入变量到输出变量映射的未知变量等因素造成的。
在本文中,我们将重点关注我们可以通过机器学习算法来影响的两个部分:偏差误差和方差误差。
获取您的免费算法思维导图

方便的机器学习算法思维导图样本。
我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。
下载、打印并使用它。
还可以独家访问机器学习算法电子邮件迷你课程。
偏差误差
偏差是模型为使目标函数更易于学习而做出的简化假设。
通常,线性算法的偏差较高,这使得它们学习速度快且易于理解,但通常灵活性较低。反过来,它们在未能满足算法偏差的简化假设的复杂问题上的预测性能较低。
- 低偏差:表明关于目标函数的形状的假设较少。
- 高偏差:表明关于目标函数的形状的假设较多。
低偏差机器学习算法的示例包括:决策树、K近邻算法和支持向量机。
高偏差机器学习算法的示例包括:线性回归、线性判别分析和逻辑回归。
方差误差
方差是当使用不同的训练数据时,目标函数的估计会发生变化的量。
目标函数由机器学习算法从训练数据中估计得出,因此我们应该期望该算法具有一定的方差。理想情况下,它从一个训练数据集到下一个训练数据集的变化不应太大,这意味着该算法擅长找出输入和输出变量之间的隐藏的底层映射。
高方差的机器学习算法会受到训练数据细节的强烈影响。这意味着训练的细节会影响用于表征映射函数的参数的数量和类型。
- 低方差:表明随着训练数据集的变化,目标函数的估计变化很小。
- 高方差:表明随着训练数据集的变化,目标函数的估计变化很大。
通常,具有很大灵活性的非线性机器学习算法的方差较高。例如,决策树的方差较高,如果在使用前不对树进行剪枝,方差会更高。
低方差机器学习算法的示例包括:线性回归、线性判别分析和逻辑回归。
高方差机器学习算法的示例包括:决策树、K近邻算法和支持向量机。
偏差-方差权衡
任何监督式机器学习算法的目标都是实现低偏差和低方差。反过来,算法应实现良好的预测性能。
您可以看到上述示例中的一个总体趋势
- 线性机器学习算法通常具有高偏差但低方差。
- 非线性机器学习算法通常具有低偏差但高方差。
机器学习算法的参数化通常是为了平衡偏差和方差的斗争。
下面是针对特定算法配置偏差-方差权衡的两个示例
- K近邻算法具有低偏差和高方差,但可以通过增加k值来改变权衡,k值会增加影响预测的邻居数量,从而增加模型的偏差。
- 支持向量机算法具有低偏差和高方差,但可以通过增加C参数来改变权衡,C参数会影响训练数据中允许的边距违反数量,这会增加偏差但会减少方差。
在机器学习中,偏差和方差之间的关系是无法逃避的。
- 增加偏差会减小方差。
- 增加方差会减小偏差。
这两种担忧之间存在一种权衡,您选择的算法以及您配置它们的方式是在为您的项目找到不同的平衡。
实际上,我们无法计算真实的偏差和方差误差项,因为我们不知道实际的底层目标函数。尽管如此,作为一种框架,偏差和方差为理解机器学习算法在追求预测性能方面的行为提供了工具。
进一步阅读
本节列出了一些推荐资源,如果您想了解更多关于偏差、方差和偏差-方差权衡的信息。
总结
在本文中,您了解了机器学习算法的偏差、方差和偏差-方差权衡。
您现在知道
- 偏差是模型为使目标函数更易于逼近而做出的简化假设。
- 方差是给定不同训练数据时目标函数估计会发生变化的量。
- 权衡是偏差引入的误差与方差之间的张力。
您对偏差、方差或偏差-方差权衡有任何疑问吗?请留言提问,我会尽力回答。
我刚读了一篇关于偏差-方差权衡的漂亮且细腻的博文。期待以更简单的方式学习更多机器学习算法。
过拟合的模型更有可能具有高或低的____
偏差或方差
偏差
过拟合
——————-
偏差 >> 低
方差 >> 高
高方差
高方差
对于过拟合模型
低偏差和高方差
您好,我想检查虹膜数据集的偏差-方差权衡。有人知道如何找到它吗??????????
请告知解决方案……
您好,我需要使用R编程函数来查找。请回复……
我认为有一个拼写错误……高偏差意味着对目标函数的假设更多。例如:线性回归。
但文章中却说相反:
“高偏差:表明关于目标函数的形状的假设较少。”
谢谢,已修正。
您好,较少的假设可能意味着模型复杂度较低,所以我认为高偏差可能意味着模型复杂度较低且假设较少。
高偏差意味着对模型有很强的假设或很强的限制。
我同意Fei Du的观点。
Fei Du和Massi说错了。一个更简单的模型是具有更多假设的模型。这就是为什么当我们在多项式中删除非线性项时,广义线性模型会变成线性模型。复杂度和假设的减少在这种情况下是相反的。线性模型是多项式的一个特例,因此对模型施加了更多的限制。
模型复杂度是一个棘手的问题,有很多方法可以衡量它(例如,自由度、容量、参数等)。
高偏差模型可以复杂也可以简单,复杂度是需要考虑的另一个维度。
这个解释很完美。感谢您的努力。
谢谢你。
非常简单的解释。谢谢。
很高兴它能帮到你,Sam。
很好的解释,谢谢!
很高兴它有帮助。
干得漂亮!我有一个疑问,如果我们减小方差,那么偏差就会增加,反之亦然,但这些参数的下降和上升的速率是相同的还是恒定的,还是取决于使用的特定算法?我们可以根据偏差-方差权衡来调整模型吗?
它们是相互关联的。
是的,必须根据特定问题调整权衡,以达到所需的泛化水平。
在设计任何模型时,为了获得更好的模型,应该首先最小化偏差还是方差?
也许可以从偏差非常大的模型开始,然后逐渐向高方差模型过渡?
是否存在一个限制或一个尺度来了解偏差和方差的误差是最小还是最大?
没有,这取决于具体问题/指标/算法。
谢谢你
有哪些方法可以理解我们模型中的偏差和方差?我们如何量化偏差-方差权衡?谢谢。
好问题,这可能适用于特定算法,例如在KNN中,将k从1增加到n(模式数量)并在测试集上绘制模型技能。
你好
我猜这篇文章太旧了,但我还是试试,也许如果你能回答我的问题,那对我将是很有帮助的。
偏差和方差在训练数据的结果中到底扮演着什么角色?
方差与偏差的权衡到底意味着什么?
它如何影响整体方法?
谢谢
这是一个抽象的概念,有助于理解机器学习算法的一般工作原理。它代表了先验知识/偏差与从数据中学习/方差之间存在的张力。
您好,我对此仍然有些困惑。请通过阅读以下情况来帮助我。
假设有5个政党参加选举,我们想提前预测谁将获胜。我们从一个社区中选择5个人,并分别询问他们将投票给哪个政党。假设这5个人都选择了5个不同的政党。如果我们把每个人当作一个机器学习模型,他们的答案作为训练数据并据此进行预测,那么对于这5个模型,我们最终会预测出5个不同的结果。这使得这是一个高方差的情况,因为结果在变化,同时也是高偏差,因为我们只选择了一类人(他们都来自一个特定的社区)。接下来,如果我们选择1000人进行民意调查,并且假设每个政党有200人。现在如果我们把这1000人当作模型,我们将对每个政党有200个预测。我们可以称之为低偏差,因为我们选择了更大的群体,因此更能代表其人口,但这仍然是高方差,对吗?因为仍然存在各种各样的结果。最后,如果这1000人中有700人选择了一个政党(并且该政党实际上获胜),而其余300人分布在其他政党中,这是否就是我们所说的高方差?如果该政党输了,我们该称之为什么?
另外,请告知我是否有任何不正确的陈述。
谢谢。
会有一些方差,但为什么是高方差呢?如果他们来自同一个地理区域,观看同一个新闻,那么偏差可能很高,但方差却很低。
另外,如果只有两种选择,例如二元分类,那么偏差和方差的意义就不大了。也许您想要一个例子,比如猜测罐子里硬币的数量?
关于这个陈述的一个问题。您说如果只有两种选择,那么偏差和方差的意义就不大了。您指的是输出方面的两种选择吗?我之所以这样问,是因为在各种情感分析的设想中,您有两种选择(输出):0或1。基本上是“不预测”或“预测”。
但在这种二元情况下,偏差似乎可能悄悄地发生。例如,在使用电影评论的数据中,如果“bad”这个词以前只用于明显负面的评论,那么就可能产生偏差。但随后出现了一条新评论说:“非常想看这部电影。并没有失望。”这里“bad”的使用不是负面的语境,但可能受到偏差的影响。
我是不是完全没理解您评论的意思?
是的,我猜是这样。我之所以称之为高方差,是因为高方差是不同模型预测相对于目标输出的散布。在这种情况下,1000人中只有200人是正确的,其余800人是变化的。但我可能完全错了,我会再思考一下。感谢您的快速回复。
是否存在高方差和高偏差并存的情况?
实际上没有,请回想一下这些术语是平衡的。
高偏差会减小方差。
高方差会减小偏差。
这个偏差概念与神经网络模型y=mx+b(偏差为1)中加入的偏差是否不同?
是的,概念不同。模型中的偏差是对模型的特定调整,权衡中的偏差是关于模型行为的抽象概念。
这里的方差是否对应于RMSE?
不,但也许是在模型在不同训练样本上训练时RMSE的方差(例如,给定初始条件的技能方差)。
嗨,Jason,
您的解释清晰简洁。您的一大优点是您能将复杂的数学主题变得简单易懂。
谢谢。
嗨,Jason,
我对方差的理解正确吗?
方差是指我们对训练数据(例如其形状)做出的某些假设,并据此选择模型。但是,当我们得到的预测值与预期值相差甚远时,我们才意识到我们在训练数据的某些假设上犯了错误?
听起来不错。
嗨,Jason,
这篇文章清晰易懂。我想问一个关于您关于 SVM 如何处理方差问题时的陈述。正如您在本文中所说,通过增加惩罚参数 C,SVM 可以降低其方差。
从我的角度来看,C 是惩罚参数,它不同于正则化 lambda,通过减小 C,我们可以缩小边距,并且学习器可能会轻微欠拟合,从而降低方差。
期待您的回复!
祝好,
Yongtao
不确定,我需要思考一下。
也许可以做一些实验来确认你的观点。
只是想确认一下我的评论是否已提交
评论需要审核,在此了解更多
https://machinelearning.org.cn/faq/single-faq/where-is-my-blog-comment
亲爱的 @Jason Brownlee:非常感谢您又一篇精彩易懂的教程。
那么根据您的描述,我可以认为线性算法(线性/逻辑回归和 LDA)只会欠拟合而不会过拟合,因为您说这些算法具有高偏差和低方差,而非线性问题(决策树、KNN、SVM)则相反吗?
高偏差的算法仍然会过拟合。
嗨,Jason,
我正在努力计算从 UCI 机器学习存储库下载的“成人数据集”的偏差/歧视。您知道如何使用矩阵计算歧视吗?提前感谢。
抱歉,我没有关于该数据集的教程,也许这个过程会有帮助
https://machinelearning.org.cn/start-here/#process
我有一个问题:模型的总误差计算如下:
总误差 = (偏差)^2 + 方差 + 不可约误差
为什么要在计算中取 (偏差)^2,而不是只取偏差?
如果偏差是方差,那么单位是平方单位。这是单位的表示法。
嗨,Jason,
非常感谢您的帖子。它帮助我理解了模型中的方差和偏差。
当我们应用随机森林或逻辑回归时,如何识别偏差和方差?我的意思是,我应该执行哪种图形来检查它?X 轴是什么,Y 轴是什么?
感谢您的帮助。
Sandeep
通常,我们不做。这是一个帮助理解模型行为的概念。
反馈:一些图片会有很大帮助
感谢您的建议。
您希望看到哪些图片的具体内容?
您的页面没有任何数学偏差。
请改进…
感谢您的建议。
有哪些方法可以计算训练数据集中的偏差和方差
这是一个理论概念,用于理解预测建模的挑战。
嗨,Jason,
您真是太棒了,您的博客和教程在我这个领域的学习过程中给了我很大的帮助。如果您能阐明我在这篇博客中遇到的一个疑问,我将不胜感激。您提到增加 SVM 中的 C 参数会如何导致偏差增加和方差减少。这正是我不太理解的地方。
我将尝试阐述我的理解,解释我为什么感到困惑,并且如果您能纠正/澄清我的理解,我将非常高兴。
我认为 C 参数表明我们多么希望避免误分类每个训练示例。因此,较大的 C 值会迫使优化选择较小的边距。较小的边距随后会导致过拟合,从而导致低偏差和高方差。
基于我对 C 参数的这种理解,我很难理解您何时提出增加 C 参数会导致偏差增加和方差减少。我确定我一定遗漏了什么,因此我希望您能提供我遗漏的部分并帮助我很好地理解这一点。
再次感谢。希望能尽快收到您的回复,
Ishan
谢谢。
不,较大的 C 意味着更多的偏差——更多的约束——更多的过拟合——更多的先验。
这有帮助吗?
KNN 如何成为参数化模型?它不假定对数据有任何先验知识吗?还是您指的是参数化,即参数数量固定?
谢谢。我可能指的是非线性。我会更新它。
已更新。再次感谢。
偏差和方差如何影响神经网络中的隐藏神经元数量?
更多的节点可能意味着更大的偏差,更低的方差。
您能澄清一下这个答案吗?我的理解是,更多的节点 -> 模型更灵活 / 对目标函数的模型假设更少 -> 参数对训练数据的依赖性更高 -> 方差更高,偏差更低。您能指出我推理中的错误吗?
是的,大致如此。
精彩的文章,非常简洁但信息量大。谢谢 🙂
谢谢。
我试图在线性模型上拟合非线性函数。例如,我选择了 x^3+x^2-5 作为我的非线性函数,并拟合了线性回归模型。我已经创建了不同大小的集合,比如 10、20、30……100。所以我的图是针对集合大小的。因此,随着集合大小的增加,偏差减小,方差增加。关于我选择的函数,我能从中得到什么解释?
也许线性模型不适合您的二次函数?
在机器学习中,数据在统计上是独立的,这意味着……??
A) 方差更高 B) 相关性高 C) 相关性低 D) 偏差更低
我不确定这些概念是否直接相关,是吗?
过拟合、欠拟合和偏差-方差权衡是相同的概念还是有区别?
不,它们是不同的概念。
增加训练点(输入数据)可以降低方差,而不会影响偏差。
那么下面的关系是如何成立的?
增加偏差会减小方差。
增加方差会减小偏差。
我不确定我是否同意您的前提。
是的,很容易通过增加另一个来减少一个,但这并非唯一的动态。
在 K 折交叉验证中,增加 k 会增加误差估计的方差还是减小模型的方差?为什么我们说 LOOCV 的方差很高,而不是比 k 交叉验证更好?
我不同意您的说法。
此外,通常 LOOCV 的方差比较高的 k 值要低。
“通常,具有高度灵活性的非线性机器学习算法具有高方差。例如,决策树具有高方差,如果树在未剪枝前使用,则方差甚至更高。”
这是在第 3 部分中提到的。难道不应该是灵活性较低的算法才具有高方差,因为任何很好地适应训练集的模型在另一个数据集上表现都会很差(基本上是过拟合),从而导致灵活性降低吗?
灵活性较低的算法将具有高偏差和低方差。
简单而精彩的解释。感谢您写了这么好的文章。您的帖子非常详细和翔实。
不客气!
谢谢您的文章
嗨,Jason,
您会说下面的陈述是正确的吗:正则化以引入偏差为代价来降低方差?
正则化允许从对目标模型来说太小或太嘈杂的训练数据集中学习模式。所以我应用正则化,以增加模型对训练数据的拟合度(更高的偏差),但我旨在通过避免过拟合来获得更高的泛化能力(更低的方差,即模型更不倾向于遵循仅仅是噪声的模式)。
正确。
嗨 Jason,非常感谢您的这篇文章。有一件事我还不清楚,那就是偏差随着方差的增加而减少。
我头脑中想到了一个例子,我很想听听您的看法。
例如,如果我的数据来自 Y = f(X) + e,其中 f:x^2,我选择使用多项式回归来建模,现在我必须选择多项式的次数 K。
在我看来,我认为偶数次数的 K 会更好地拟合我的数据,因为偶数次多项式与二次函数具有相同的凹度,因此在极端情况下的行为是相同的(我不知道“凹度”是否是正确的术语,我的意思是对于 x-> +inf 和 x-> -inf 的行为对于偶数次多项式是相同的),因此我认为它们能更好地拟合我的原始函数 f(x) = x^2。
如果我的例子是正确的,在我看来,次数为 K=4 的多项式比次数为 K=3 的多项式具有更低的偏差,同时具有更高的复杂性和(我认为)更高的方差。
不完全是。因为 K=4 是 K=3 的超集。您最终可能会找到 Ax^4+Bx^3+Cx^2+Dx+E,其中 A 非常接近于零。
好的 Adrian,我想我现在明白了,多亏了您的评论:我们所说的增加模型的复杂度是通过向模型的先前版本添加更多参数来实现的(在我的例子中,增加多项式的次数,即向我们的多项式函数添加更多项),通过这种方式,我们总是创建一个包含所有先前模型的超模型。通过这种方式,偏差只能随着我们向模型添加更多项而减小,因为我们总是“拥有”前一个模型版本包含在新模型中(在我的例子中,我们拥有所有次数低于 K 的多项式作为可能性)。
非常感谢您 Adrian
不客气。
一个快速的澄清问题。在这种情况下,偏差是指:(a) 对于一个预测模型和一个训练数据集,在所有数据样本上,允许正负抵消的预测误差的平均值?(b) 对于 (a) 中用许多不同的训练数据集产生的预测模型的平均误差的平均值,还是两者都有?
我相信类比也适用于方差(如果我错了请纠正我)
“方差是指当使用不同的训练数据时,目标函数估计值会如何变化。”在给定的陈述中,“不同的训练集”是什么意思?不同的训练集可以有不同的特征,还是只是从先前(最初)选择的特征中提取的不同行集?
嗨 Saumya…您可能会发现以下内容很有趣
有三种情况
1. 过拟合
训练损失 - 对于每一组训练测试分割,接近 0
测试损失 - 不同训练测试分割的高方差
偏差 - 通常与训练损失相关 - 如果训练损失较低,则根据偏差的定义,这是一个低偏差的情况。所以过拟合时偏差较低
方差 - 高
2. 欠拟合
训练损失 - 对于每一组训练测试分割,都高
测试损失 - 对于每一组训练测试分割,都高
偏差 - 高
方差 - 低,因为对于不同的分割,测试损失很高
3. 平衡拟合
训练损失 - 对于每一组训练测试分割,都低
测试损失 - 对于每一组训练测试分割,都低
偏差 - 低
方差 - 低,因为对于不同的分割,测试损失很低
因此,从以上讨论可以看出,偏差和方差并非完全相反,而是由于训练和测试数据的关系而有些关联。
Surender,反馈很棒!
对于 SVM,c 与正则化强度成反比。
讨论 (i) 基于质心的分类器,(ii) kNN 分类器,以及 (iii) SVM 分类器中的偏差-方差权衡,从类分离边界的性质以及可能影响它们的训练集中的数据点的角度来看。
classifier, and (iii) SVM classifier in terms of the nature of class separation
boundaries and the data points in the training set that can effect them.
嗨 Sam…您可能会发现以下内容很有趣
https://monkeylearn.com/blog/what-is-a-classifier/
讨论 (i) 基于质心的分类器,(ii) kNN 分类器,以及 (iii) SVM 分类器中的偏差-方差权衡,从类分离边界的性质以及可能影响它们的训练集中的数据点的角度来看。
classifier, and (iii) SVM classifier in terms of the nature of class separation
boundaries and the data points in the training set that can effect them.
请回答这个问题?
嗨 James,
这可能是一个愚蠢的问题,但它在我脑海中困扰了很长时间,所以就问了。偏差-方差权衡中的方差和统计学中的方差(衡量与平均值或均值的变异性)是不同的吗?非常感谢您的帮助。
嗨 Akash…它们确实是相互关联的。以下资源是理解机器学习与统计学之间联系的好方法
https://machinelearning.org.cn/statistics_for_machine_learning/
谢谢你
非常欢迎您,vivek!
嗨,我想知道为什么偏差错误被称为偏差?我假设是因为算法对目标函数做了某种假设,这导致算法在简化的目标函数上产生偏差。
嗨 Dimitrije…以下资源可能对您感兴趣
https://www.baeldung.com/cs/machine-learning-biases
嗨 James,谢谢!