1. 程式人生 > >如何理解bagging是減少variance,而boosting是減少bias?

如何理解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 參考文獻