【ML Note】机器学习中的 bias variance

编程入门 行业动态 更新时间:2024-10-05 13:21:28

【ML Note】<a href=https://www.elefans.com/category/jswz/34/1771242.html style=机器学习中的 bias variance"/>

【ML Note】机器学习中的 bias variance

机器学习模型中的误差主要分为两个部分:bias和variance,一般情况下,模型需要在bias和variance之间取得一个平衡。bias小的模型,variance一般大;variance小的模型,bias一般大。更好的理解bias和variance的关系能够帮助我们更好的应付模型的过拟合和欠拟合问题。

Bias

Bias表示的就是模型预测的值和真实值之间的距离的期望。所以我们会通过建立多个模型(如使用不同的数据子集)来估计这个误差期望值。
Bias代表着算法的拟合能力。

偏差大的模型,它通常不怎么从训练集里学习到东西,导致模型过于简单,自然在预测测试集的时候,效果不好。

偏差出现于我们用简化模型去近似复杂关系的时候。例如一组自变量和因变量的关系十分复杂,是非线性的,但我们却试图采用线性回归模型。这样的话,就算有千百万的训练样本,我们也建立不了一个准确的模型。采用简化模型时,我们便自动限制了模型的性能,因为模型无法反应特征和目标变量之间的真实关系。

偏差较高的模型抓不住关键重要的关系。因此,训练和验证集的准确率都会较低。这种情况又叫欠拟合。偏差高的模型易于欠拟合。以下面的散点图为例,其展示了一个特征变量和目标变量的关系。如果我们用红线做模型来预测蓝点所描述的关系,那模型的偏差就太高了,对数据是欠拟合的。

Variance

这里的方差依旧和我们统计学学的方差是一个意思,描述数据分布的分散程度。这里的数据分布,就是我们模型预测值的数据分布。从式子本身来看,是与真实值没有关系的。

Variance表示的是当你对一个模型使用不同的数据进行多次建模时,这些模型在某一个点上的预测值的方差就是该模型在这个点上预测值的variance。
Variance代表这算法的鲁棒性。

方差大的模型,往往是从训练集里学了太多东西,简称过拟合。所以导致在测试集的表现时好时坏,预测值的数据分布就离散了,方差也就大了。

方差出现于模型对自变量的变化高度敏感的时候。模型试图提取特征和目标关系中的一切细节,甚至会学习数据中可能随机出现的噪声。而一个特征变量很小的变动就可能改变整个模型的预测结果。因此,我们的模型会抓住训练集内的所有细节,训练集的准确率就会非常高。然而,一个全新、从未见过的样本的准确率就不会太好了,因为特征变量总会有各种不同的变化。这种情况又叫过拟合。模型对训练集过拟合,但对数据集里的真实关系却不能很好地泛化。模型在那些见过的样本上的准确率会很高但在新样本上的准确率则会较低。用上述同样的例子,如果我们用下图红色曲线来模拟该关系,模型就过拟合了。可以看到,它高度敏感,且试图抓取所有的变化。

Bias Variance Trade-off

E r r ( x ) = E [ ( Y − F ( X ) ) 2 ] (1) Err(x)=E[(Y-F(X))^2] \tag{1} Err(x)=E[(Y−F(X))2](1)
E r r ( X ) = E [ ( Y − E ( f ( x ) ) + E ( f ( x ) ) − f ( x ) ) ] 2 + σ ϵ 2 = E [ Y − E ( f ( x ) ) ] 2 + E [ ( f ( x ) − E [ f ( x ) ] ) 2 ] + σ ϵ 2 = B i a s 2 + V a r i a n c e + I r r e d u c i b l e E r r (2) \begin{aligned} Err(X) &= E[(Y-E(f(x))+E(f(x))-f(x))]^2+\sigma_{\epsilon}^2 \\ &= E[Y-E(f(x))]^2+E[(f(x)-E[f(x)])^2]+\sigma_{\epsilon}^2 \\ &= Bias^2+Variance + IrreducibleErr \end{aligned} \tag{2} Err(X)​=E[(Y−E(f(x))+E(f(x))−f(x))]2+σϵ2​=E[Y−E(f(x))]2+E[(f(x)−E[f(x)])2]+σϵ2​=Bias2+Variance+IrreducibleErr​(2)
所以误差平均值的期待值可以被“解剖”成三个部分,分别是偏差的平方、方差和不可约的错误(因为数据集多多少少会有一些噪音,但这是可以接受的,而且也是无论换什么模型都无法避免的问题)。


我们可以看到,Bias表示的是模型预测的均值和真实值之间的距离。如果模型 M 1 M_1 M1​ 预测的值和真实值之间的距离服从高斯分布,即 M 1 : E r r ( x ) ∼ N ( μ , σ 2 ) M_1: Err(x)\sim N(\mu, \sigma^2) M1​:Err(x)∼N(μ,σ2) 。如果有n个如同 M 1 M_1 M1​ 这样的模型(一般通过采样总样本不同的数据子集来训练不同的模型),并且模型之间独立,则可以得到 M 1 + ⋯ + M n n : E r r ( x ) ∼ N ( μ , σ 2 n ) \frac{M_1+\cdots+M_n}{n}: Err(x)\sim N(\mu, \frac{\sigma^2}{n}) nM1​+⋯+Mn​​:Err(x)∼N(μ,nσ2​) 。我们发现,通过对这n个模型进行平均,variance减小了,但bias没变。这就是bagging的功效,也就是为什么random forest更加鲁棒的原因(也可以用来解释神经网络中的dropout)。虽然bagging可以减小模型的方差,但是我们发现,并没有增加模型预测的准确率,也就是bagging减小了variance,却没减小bias。因而bagging中的模型是强模型,bias小,variance大。使用bagging,目标是降低variance。

为了减小模型的bias,我们可以使用boosting的方法(如adaBoost,GBDT,XGBoost)。Boosting中的模型是弱模型(比随机猜测好一点),bias大,variance小。如adaBoost在实现的时候常用决策树桩(也就是单层的决策树)。boosting的方法,会在之前模型预测误差即基础上继续建模预测,因而能够减小模型的bias,但由于此时模型之间不是独立的,所以variance的减小不显著。

我们希望得到一个good balance的模型,那就是说它的模型复杂度需要刚刚好,即不会因为过拟合(与方差有关)也不会欠拟合(与偏差有关)。

如果我们的模型过于简单且参数很少,那么它可能具有高偏差和低方差。 另一方面,如果我们的模型具有大量参数,那么它将具有高方差和低偏差。 因此,我们需要找到合适的平衡点,而又不会过度拟合和拟合不足的数据。

所以,简而言之,偏差与方差之间的权衡就是模型复杂度的权衡。

Reference




更多推荐

【ML Note】机器学习中的 bias variance

本文发布于:2024-02-27 16:06:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707282.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机器   Note   ML   bias   variance

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!