校招在即,准备准备一些面试可能会用到的东西吧。希望这次面试不会被挂。
基本概念
说到机器学习模型的误差,主要就是bias和variance。
-
Bias:如果一个模型的训练错误大,然后验证错误和训练错误都很大,那么这个模型就是高bias。可能是因为欠拟合,也可能是因为模型是弱分类器。
-
Variance:模型的训练错误小,但是验证错误远大于训练错误,那么这个模型就是高Variance,或者说它是过拟合。
这个图中,左上角是低偏差低方差的,可以看到所有的预测值,都会落在靶心,完美模型;
右上角是高偏差,可以看到,虽然整体数据预测的好像都在中心,但是波动很大。
【高偏差vs高方差】
在机器学习中,因为偏差和方差不能兼顾,所以我们一般会选择高偏差、低方差的左下角的模型。稳定性是最重要的,宁可所有的样本都80%正确率,也不要部分样本100%、部分50%的正确率。个人感觉,稳定性是学习到东西的体现,高方差模型与随机蒙的有什么区别?
随机森林为例
上面的可能有些抽象,这里用RandomForest(RF)来作为例子:
随机森林是bagging的集成模型,这里:
R
F
(
x
)
=
1
B
∑
i
=
1
B
T
i
,
z
i
(
x
)
RF(x)=\frac{1}{B}\sum^B_{i=1}{T_{i,z_i}(x)}
RF(x)=B1∑i=1BTi,zi(x)
- RF(x)表示随机森林对样本x的预测值;
- B表示总共有B棵树;
- z i z_i zi表示第i棵树所使用的训练集,是使用bagging的方法,从所有训练集中进行行采样和列采样得到的子数据集。
这里所有的
z
z
z,都是从所有数据集中随机采样的,所以可以理解为都是服从相同分布的。所以不断增加B的数量,增加随机森林中树的数量,是不会减小模型的偏差的。
【个人感觉,是因为不管训练再多的树,其实就那么多数据,怎么训练都不会减少,这一点比较好理解】
【RF是如何降低偏差的?】
直观上,使用多棵树和bagging,是可以增加模型的稳定性的。怎么证明的?
我们需要计算
V
a
r
(
T
(
x
)
)
Var(T(x))
Var(T(x))
假设不同树的
z
i
z_i
zi之间的相关系数为
ρ
\rho
ρ,然后每棵树的方差都是
σ
2
\sigma^2
σ2.
先复习一下两个随机变量相加的方差如何表示:
V
a
r
(
a
X
+
b
Y
)
=
a
2
V
a
r
(
X
)
+
b
2
V
a
r
(
Y
)
+
2
a
b
c
o
v
(
X
,
Y
)
Var(aX+bY)=a^2 Var(X)+b^2 Var(Y) + 2ab cov(X,Y)
Var(aX+bY)=a2Var(X)+b2Var(Y)+2abcov(X,Y)
- Cov(X,Y)表示X和Y的协方差。协方差和相关系数不一样哦,要除以X和Y的标准差:
ρ = c o v ( X , Y ) σ X σ Y \rho=\frac{cov(X,Y)}{\sigma_X \sigma_Y} ρ=σXσYcov(X,Y)
下面转成B个相关变量的方差计算,是矩阵的形式:
很好推导的,可以试一试。
这样可以看出来了,RF的树的数量越多,RF方差的第二项会不断减小,但是第一项不变。也就是说,第一项就是RF模型偏差的下极限了。
【总结】
- 增加决策树的数量B,偏差不变;方差减小;
- 增加决策树深度,偏差减小; ρ \rho ρ减小, σ 2 \sigma^2 σ2增加;
- 增加bagging采样比例,偏差减小; ρ \rho ρ增加, σ 2 \sigma^2 σ2增加;
【bagging vs boost】
之前也提到过了boost算法:
一文读懂:GBDT梯度提升
GBDT中,在某种情况下,是不断训练之前模型的残差,来达到降低bias的效果。虽然也是集成模型,但是可以想到,每一个GBDT中的树,所学习的数据的分布都是不同的,这意味着在GBDT模型的方差会随着决策树的数量增多,不断地增加。
- bagging的目的:降低方差;
- boost的目的:降低偏差
喜欢的话,可以微信扫码关注微信公众号【机器学习炼丹术】,成为炫酷的炼丹师吧~
公众号回复【下载】有精选的免费机器学习学习资料。 公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~
- 【机器学习的基础数学(PDF)】
- 【竞赛中的大数据处理流程(PDF)】
- 【如何做大数据的基础特征工程(PDF)】
- 【自然语言处理NLP的应用实践大合集(PDF)】
- 【python入门级教材(400页PDF)】
公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~