如何理解bagging是减少variance,而boosting是减少bias?

熟悉集成学习的读者,肯定对bagging和boosting都比较熟悉。在学习这二者的时候,肯定都知道一句话:即bagging是减少variance,而boosting是减少bias。那么,为什么是这样的效果呢?

本篇博客在总结网上多个回答的基础上,加入了自己的理解。

1 variance和bias

先看一下什么是variance和bias

High variance 是model过于复杂overfit,记住太多细节noise,受outlier影响很大;high bias是underfit,model过于简单,cost function不够好。

2 bagging为何减少variance?

Bagging对样本重采样(有放回),对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立,如何理解模型不是独立?下面会有解答)。

为了方便进行讲解,不妨认为各个子模型的bias和variance完全相等因此E( \frac{\sum{X_i}}{n} )=E(X_i),所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。另一方面,若各子模型独立,则有Var( \frac{\sum{X_i}}{n} )=\frac{Var(X_i)}{n},此时可以显著降低variance。若各子模型完全相同,则Var( \frac{\sum{X_i}}{n} )={Var(X_i)},此时不会降低variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance

为了进一步降低variance,Random forest通过随机选取变量子集做拟合的方式de-correlated了各子模型(树),使得variance进一步降低。用公式可以一目了然:设有i.d.(同分布)的n个随机变量,方差记为\sigma^{2},两两变量之间的平均相关性为\rho,则\frac{\sum{X_i}}{n}的方差为\rho*\sigma^{2}+(1-\rho)*\sigma^{2}/n,bagging降低的是第二项,random forest是同时降低两项。详见ESL p588公式15.1)


A:在这里,我简单推导下公式,肯定很多同学不大理解我上述的关于均值和方差的公式来的,先奉上维基百科的均值方差的知识点。在知识点的基础上,为了方便推导,我们假设只有2个随机变量X_1X_2

E( \frac{\sum{X_i}}{n} )=E( \frac{X_1+X_2}{2} )= \frac{1}{2}E(X_1+X_2)=\frac{1}{2}E(2X_1)=E(X_1)=E(X_i)

②当X_1X_2完全独立时,参看(方差Sum of uncorrelated variables (Bienaymé formula))

Var( \frac{\sum{X_i}}{n} )=Var( \frac{X_1+X_2}{2} )=\frac{1}{4} Var(X_1+X_2)=\frac{1}{4}(Var(X_1)+Var(X_2 ))=\frac{1}{4}(2Var(X_1))=\frac{Var(X_i)}{2}=\frac{Var(X_i)}{n}

③当X_1X_2完全相关时,参看(方差Sum of correlated variables)

Var( \frac{\sum{X_i}}{n} )==Var( \frac{X_1+X_2}{2} )=\frac{1}{4} Var(X_1+X_2)=\frac{1}{4}(Var(X_1)+Var(X_2 )+2Var(X_1 ))={Var(X_1)}={Var(X_i)}

\frac{\sum{X_i}}{n}的方差,参看(方差Sum of correlated variables)

\operatorname {Var} ({\overline {X}})={\frac {\sigma ^{2}}{n}}+{\frac {n-1}{n}}\rho \sigma ^{2}.


B: 如何理解各个子模型是不独立的?

可能有的读者认为bagging的重采样的子模型之间是独立的,理由是:每一次抽样都与前一次抽样无关,这样bagging的子模型当然是独立的,这里的误区是认为对训练集(总体的子集)进行子抽样就是描述模型的随机性。

正确的理解应该是:模型可以看做n个独立同分布随机样本的函数f(X1,X2,...,Xn),其中X1,X2,...,Xn是独立同分布的随机变量。如果我们预先设置好,取X1,X2,..,Xn训第一个模型,Xn+1,Xn+2,X2n训第二个模型,那么这两个模型是两组不重叠的独立随机变量集合的函数,因此是独立的。但现在bagging相当于从(1,2,...,m)里抽n个数出来,形成模型f(Xk1,Xk2,...Xkn),那么这样选取的随机变量集合有交叠,就会导致两个模型是两组重叠的随机变量集合的函数,从而不独立。可以考虑一个极端的情形,样本总量是n+1个,每一次重采样取n个样本,那么任意两次的样本都几乎一样,模型也因此几乎一样。


3 boosting为何减少bias?

boosting从优化角度来看,是用forward-stagewise这种贪心法去最小化损失函数L(y, \sum_i a_i f_i(x))。例如,常见的AdaBoost即等价于用这种方法最小化exponential loss:L(y,f(x))=exp(-yf(x))。所谓forward-stagewise,就是在迭代的第n步,求解新的子模型f(x)及步长a(或者叫组合系数),来最小化L(y,f_{n-1}(x)+af(x)),这里f_{n-1}(x)

是前n-1步得到的子模型的和。因此boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。


4 参考文献

为什么说bagging是减少variance,而boosting是减少bias?

猜你喜欢

转载自blog.csdn.net/anshuai_aw1/article/details/82911612