李宏毅深度学习笔记(四)观测误差的来源——欠拟合和过拟合的解释

本文深入探讨了机器学习中偏差和方差的概念,解释了它们如何导致欠拟合和过拟合,以及如何通过调整模型复杂度和样本量来优化模型。

测试误差一般来源于偏差(bias)和方差(variance)
当偏差(Bias)大的时候就会出现欠拟合,当方差(Variance)大的话就会出现过拟合。

先给出结论:
当偏差(Bias)大的时候我们可以通过增加特征个数(使用更复杂的模型)来优化。
当方差(Variance)大的时候我们可以通过增加样本个数或者正则化来优化。

什么是估计量的偏差和方差

∙\bullet估计变量xxx的平均值:假设xxx的平均值是μ\muμ;假设xxx的方差是σ2\sigma^2σ2

那么在已知xxx的一些样本点(但不知道全部)的情况下如何来求μ\muμ呢?例如已知NNN个样本点{x1,x2,⋅⋅⋅,xNx^1,x^2,···,x^Nx1,x2,,xN}。

这时候就要期望来求μ\muμ值了,如下:

m=1N∑i=1Nxi≠μm=\frac{1}{N}\sum_{i=1}^Nx^i\ne\mum=N1i=1Nxi=μ

E[m]=E[1N∑i=1Nxi]=1N∑i=1NE[xi]=μE[m]=E[\frac{1}{N}\sum_{i=1}^Nx^i]=\frac{1}{N}\sum_{i=1}^NE[x^i]=\muE[m]=E[N1i=1Nxi]=N1i=1NE[xi]=μ

mmm的方差为(mmm的方差取决于样本的个数):

Var[m]=σ2NVar[m]=\frac{\sigma^2}{N}Var[m]=Nσ2

s2=1N∑i=1N(xn−m)2s^2=\frac{1}{N}\sum_{i=1}^N(x^n-m)^2s2=N1i=1N(xnm)2

E[s2]=N−1Nσ2≠σ2E[s^2]=\frac{N-1}{N}\sigma^2\ne\sigma^2E[s2]=NN1σ2=σ2

NNN越大E[s2]E[s^2]E[s2]越接近σ2\sigma^2σ2

为什么测试误差来源于偏差和方差

在这里插入图片描述
如上图右下角部分的图所示,我们认为实际的目标为红色点,而我们所算出来的为蓝色的小点。取这些蓝色小点的期望为f^=E(f∗)\hat f=E(f^*)f^=E(f),用如图所示的蓝色大点表示,那么蓝色大点与红色点之间的距离就是偏差(Bias),而这些蓝色小点与蓝色大点之间的距离就构成了方差(Variance)。
左上角是最好的情况,此时它的偏差(Bias)和方差(Variance)都比较小;右上角的偏差(Bias)比较小,方差(Variance)比较大;左下角偏差(Bias)比较大,方差(Variance)比较小。

偏差和方差由什么因素决定

∙\bullet首先==方差(Variance)==是由模型的复杂度决定的,模型越复杂方差越大。
下面两幅图中的每一条函数曲线都是从同一分布中随机抓取相同数量的样本分别学习得到的预测曲线。
在这里插入图片描述
从上图可以看到当采用比较简单的模型时得到的预测曲线比较一致,当使用比较复杂的模型时得到的预测曲线就显得杂乱无章了。就像比较聚集的蓝色小点和比较分散的蓝色小点一样。

∙\bullet偏差(Bias)
如果我们把所有的f∗f^*f做平均它是否会接近f^\hat ff^呢?
我们先假设一个f^\hat ff^,如下图:
在这里插入图片描述
我们分别用一次式、三次式和五次式为模型来对5000个不同的样本组进行学习并绘制出预测曲线,并用黑色曲线表示我们假设的f^\hat ff^,用蓝色曲线表示对5000条预测曲线求平均后的曲线,如下图。
在这里插入图片描述
我们可以看到当模型越复杂的时候预测曲线的平均值曲线与真实曲线越相近,这是因为当我们用简单的模型去学习预测函数的时候它的值域会比较小且分布范围也小,当我们用比较复杂的模型去学习预测函数的时候它的值域会比较大且分布比较广。如下图。
在这里插入图片描述

受两个因素影响的观测误差

如下图,结合前文所述,可以总结出观测误差是如何被偏差和方差影响的。下图中红线代表由偏差引起的误差,绿线代表由方差引起的误差,蓝线代表观测误差。
在这里插入图片描述

分两种情况来进行优化

∙\bullet偏差(Bias)比较大的情况:
当偏差(Bias)大的时候我们可以通过增加特征个数(使用更复杂的模型)来优化。

∙\bullet方差(Variance)比较大的情况:
当方差(Variance)大的时候我们可以通过增加样本个数或者正则化来优化。
在这里插入图片描述

如何选择模型

上文中我们论述了观测误差的来源,我们知道造成观测误差的是偏差(Bias)和方差(Variance),要想是观测误差变小模型的选择就很重要了。接下来我们讨论一下如何选择模型。

交叉验证(Cross Validation)

为了选到更好的模型,我们可以先在训练集中进行筛选,筛选的方法是先把训练集分成一个子训练集和一个验证集。在子训练集上按照不同的模型训练好函数之后将其放到验证集里验证,算出每个模型对应的误差,然后取误差做小的模型对应的函数。
在这里插入图片描述

N折交叉验证(N-fold Cross Validation)

我们可以将训练集分成三份并让这是三份集合轮流当验证集,其他两份当训练集。这样在每次计算出误差之后求平均,看看哪个模型求出来的误差小就用那个模型。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

comli_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值