Datawhale学习打卡LeeML-Task03
作者:互联网
Datawhale学习打卡LeeML-Task03
梯度下降部分请转: Task03-梯度下降
本文档所参考的一些文档
- 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
- 偏差(Bias)和方差(Variance)——机器学习中的模型选择(讲的很好)
- LeeML-P5:误差从哪来
————————————————————-—————————————————————————
误差
误差来源
误差来自于偏差(bias)和方差(variance)
更准确的说:可以分解为三个部分:样本噪音、模型预测值的方差、预测值相对真实值的偏差
E
(
(
y
−
f
^
(
x
)
)
2
)
=
σ
2
+
Var
[
f
^
(
x
)
]
+
(
Bias
[
f
^
(
x
)
]
)
2
E\left((y-\hat{f}(x))^{2}\right)=\sigma^{2}+\operatorname{Var}[\hat{f}(x)]+(\operatorname{Bias}[\hat{f}(x)])^{2}
E((y−f^(x))2)=σ2+Var[f^(x)]+(Bias[f^(x)])2即:误差的期望值 = 噪音的方差 + 模型预测值相对模型期望(方差) + 预测值的期望相对真实值的偏差的平方
样本噪音说明:我们设置真实模型 f ( x ) = x + 2 s i n ( 1.5 x ) f(x) = x + 2sin(1.5x) f(x)=x+2sin(1.5x),样本值 y 就在真实值的基础上叠加一个随机噪音 N(0, 0.2)。即: y = x + 2 sin ( 1.5 x ) + N ( 0 , 0.2 ) y=x+2 \sin (1.5 x)+N(0,0.2) y=x+2sin(1.5x)+N(0,0.2) 这样就存在样本噪音了。
解释:类比解释
靶心(红点)是测试样本的真实值,测试样本的y(橙色点)是真实值加上噪音,特定模型重复多次训练会得到多个具体的模型,每一个具体模型对测试样本进行一次预测,就在靶上打出一个预测值(图上蓝色的点)。
- 所有预测值的平均就是预测值的期望(较大的浅蓝色点)通过期望与真实值进行比较 是否相等,即无偏;
对应于打靶,如果不想等,就说明一开始瞄准的就不是真实值,比如实际上射击瞄准的是9环而不是10环。 - 浅蓝色的圆圈表示预测值的离散程度,即预测值的方差(每一次的预测结果相对于模型的期望而言)。对于打靶反应的是模型的稳定性。
所以,特定模型的预测值 与 真实值 的误差的 期望值,分解为上面公式中的三个部分,对应到图上的三条橙色线段:预测值的偏差、预测值的方差、样本噪音。
数学证明
具体可见:偏差(Bias)和方差(Variance)——机器学习中的模型选择
—————————————————————————————————————————————
估计变量x的偏差和方差
- 假设x 的平均值是 μ \mu μ,方差为 σ 2 \sigma^2 σ2
估计变量x的偏差
估计平均值
- N个样本点 :
{
x
1
,
x
2
,
…
,
x
N
}
\left\{x^{1}, x^{2}, \ldots, x^{N}\right\}
{x1,x2,…,xN}
m = 1 N ∑ n x n ≠ μ E [ m ] = E [ 1 N ∑ n x n ] = 1 N ∑ n E [ x n ] = μ \begin{aligned} &m=\frac{1}{N} \sum_{n} x^{n} \neq \mu \\ &E[m]=E\left[\frac{1}{N} \sum_{n} x^{n}\right]=\frac{1}{N} \sum_{n} E\left[x^{n}\right]=\mu \end{aligned} m=N1n∑xn=μE[m]=E[N1n∑xn]=N1n∑E[xn]=μ N个样本的平均值不等于 μ \mu μ(需要N足够大) 但是多个m的期望等于 μ \mu μ——> 无偏估计
m的分布对于 μ \mu μ的离散程度(方差): V ar [ m ] = σ 2 N \mathrm{V} \operatorname{ar}[\mathrm{m}]=\frac{\sigma^{2}}{\mathrm{~N}} Var[m]= Nσ2
可以看出方差取决于样本数量,数量越多,分布越密集
估计变量x的方差
- N个样本点 :
{
x
1
,
x
2
,
…
,
x
N
}
\left\{x^{1}, x^{2}, \ldots, x^{N}\right\}
{x1,x2,…,xN}
m = 1 N ∑ n x n s = 1 N ∑ n ( x n − m ) 2 m=\frac{1}{N} \sum_{n} x^{n} \quad s=\frac{1}{N} \sum_{n}\left(x^{n}-m\right)^{2} m=N1n∑xns=N1n∑(xn−m)2
Biased estimator:
E [ s ] = N − 1 N σ 2 ≠ σ 2 E[s]=\frac{N-1}{N} \sigma^{2} \neq \sigma^{2} E[s]=NN−1σ2=σ2
N越多,越接近 σ 2 \sigma^{2} σ2
不同模型的偏差和方差
用相同的模型model,在不同的数据集中找到的f*是不一样的
考虑不同模型的偏差
黑色是真实的函数 红色是我们找到的5000个函数 ——> 看平均
- 结论:简单的模型偏差大,复杂的模型偏差小
考虑不同模型的方差
一次模型的方差就比较小的,也就是是比较集中,离散程度较小。而5次模型的方差就比较大,同理散布比较广,离散程度较大。
所以用比较简单的模型,方差是比较小的(就像射击的时候每次的时候,每次射击的设置都集中在一个比较小的区域内)。如果用了复杂的模型,方差就很大,散布比较开。
这也是因为简单的模型受到不同训练集的影响是比较小的。
- 简单的模型,方差是比较小,复杂模型,方差大
过拟合和欠拟合
将误差拆分为偏差和方差。简单模型(左边)是偏差比较大造成的误差,这种情况叫做欠拟合,而复杂模型(右边)是方差过大造成的误差,这种情况叫做过拟合。
怎么判断
1. 模型训练训练集不好 ——> Bias偏差大——>欠拟合
解决方法:resign your model:输入更多的feature、用更复杂的模型
2. 模型很好的训练训练集,即再训练集上得到很小的错误,但在测试集上得到大的错误——>方差过大——>过拟合
解决方法:1.更多的数据(有效但不实用)2.数据增强 3.正则化(Regularization)
偏差和方差的trade-off (平衡)——模型选择
图中public的测试集是已有的,private是没有的
交叉验证
交叉验证 就是将训练集再分为两部分,一部分作为训练集,一部分作为验证集。
用训练集训练模型,然后再验证集上比较,确实出最好的模型之后(比如模型3),再用全部的训练集训练模型3,然后再用public的测试集进行测试。
此时一般得到的错误都是大一些的。不过此时会比较想再回去调一下参数,调整模型,让在public的测试集上更好,但不太推荐这样。(不要用测试集)
N-折交叉验证
将训练集分成N份,比如分成3份。分别训练,求误差平均后选择模型,再用全部训练集训练模型1。
标签:偏差,误差,训练,方差,模型,LeeML,打卡,预测值,Task03 来源: https://blog.csdn.net/weixin_43873591/article/details/122496453