1. 程式人生 > >整合學習中boosting、bagging、隨機森林演算法的介紹

整合學習中boosting、bagging、隨機森林演算法的介紹

整合學習的概念

定義:整合學習通過構建並結合多個學習器來完成學習任務。

分類:只包含同種型別的個體學習器,這樣的整合是“同質”的,例如都是神經網路或者決策樹;包含不同型別的個體學習器,這樣的整合是“異質”的,例如同時包括神經網路和決策樹。

作用:整合學習通過將多個學習器進行結合,常可獲得比單一學習器顯著優越的泛化效能。

條件:要獲得較好的整合效果,應該要求學習器“好而不同”(這也是整合學習研究的核心)。好而不同的意思是,單個學習器要有一定的“準確性”,而且學習器之間要有“多樣性”。整合結果通過“投票法”得出,即“少數服從多數”(如果投票結果相同,可隨機選擇)。

下圖體現了“好而不同”原則:圖(a)中每個分類器都有66.6%的精度,但整合學習卻達到了100%;圖(b)中三個分類器沒有區別,整合之後效能也沒有提高;圖(c)每個分類器只有33.3%的精度,整合之後結果更糟糕。

Bagging,Boosting,隨機森林 三者的概念

根據個體學習器的生成方式,目前的整合學習方法大致可分為兩大類:

1)個體學習器間存在強大依賴關係、必須序列生成的序列化方法,代表演算法:Boosting;

2)個體學習器間不存在依賴關係、可同時生成的並行化方法,代表演算法Bagging和“隨機森林”RF。

Boosting是一族可以將若學習器提升為強學習器的演算法,代表演算法為AdaBoost。該演算法的工作機制:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注,然後基於調整後的樣本分佈來訓練下一個基學習器。如此反覆進行,直至學習器數目達到事先指定的值T,最終將這T個基學習器進行加權結合。

值得注意的是,Boosting演算法在每一輪訓練都要檢查當前生成的基學習器是否滿足基本條件(當前基學習器分類精度>50%),從偏差-方差的角度,Boosting主要關注降低偏差,所以Boosting基於泛化效能很弱的學習器能夠造出很強的整合。

Bagging是並行式整合學習代表方法。基於“自助取樣法”(bootstrap sampling)。自助取樣法機制:給定包含m個樣本的資料集,我們先隨機取出一個樣本放入取樣集中,再把該樣本放回初始資料集,使得下一次取樣時該樣本還會被採到。這樣,經過m次樣本採集,我們得到包含m個樣本的取樣集。取樣集中,有的樣本出現過很多次,有的沒有出現過。Bagging機制:我們取樣出T個含m個樣本的取樣集。然後基於每個取樣集訓練出一個學習器,再將學習器進行結合。對分類任務使用投票法,對迴歸任務採用平均值法。

從偏差-方差的角度,Bagging主要關注降低方差,因此它在容易受到樣本擾動的學習器(如不剪枝的決策樹、神經網路)中效果更明顯。

AdaBoost VS Bagging:標準AdaBoost只適用於二分類任務,Bagging適用於多分類、迴歸等任務。

隨機森林(Random Forest):以決策樹為基學習器構建Bagging整合,進一步在決策樹的訓練過程中引入隨機屬性選擇。傳統決策樹在選擇劃分屬性的時候是在當前節點所有的屬性集合中選出一個左右屬性進行劃分;而在RF中,對基決策樹的每個節點,先從該節點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分。這裡的引數k控制了隨機性的引入程度。如果k=d(全部屬性集),則基決策樹的構建=傳統決策樹構建。如果k=1,基決策樹每個節點隨機選擇一個屬性進行劃分。一般推薦k=log2d。

對比Bagging和Boosting

Bagging和Boosting的區別:

1)樣本選擇上:

Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的,子集的數量等於樣本的數量。

Boosting:每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權重發生變化。

2)樣例權重:

Bagging:使用均勻取樣,每個樣例的權重相等

Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大.

3)預測函式:

Bagging:所有預測函式的權重相等.

Boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重.

4)平行計算:

Bagging:各個預測函式可以並行生成

Boosting:各個預測函式只能順序生成,因為後一個模型引數需要前一輪模型的結果.

對比Bagging和隨機森林

1)樣本選擇上:

都是有放回的隨機選取子集

2)個體決策樹的屬性:

Bagging每顆個體決策樹的結點要對所有屬性進行考察;

隨機森林的個體決策樹的結點對一部分屬性進行考察;

3)泛化效能:

隨著個體決策樹的數量增加,Bagging和隨機森林泛化效能都有所增加。

在個體決策樹數量很少時,隨機森林效能較差,因為只包含若干屬性,但隨著學習器的增加,效能很快就會變好,且強於Bagging。