機器學習:聊聊機器學習模型集成學習演算法——Bagging

Bagging?

Bagging是一種用來提高學習演算法準確度的集成方法,這種方法通過構造一隊弱分類器,然後以一定的方式將它們組合成一個強分類器。Bagging是一種要求「不穩定」(不穩定是指數據集的小的變動能夠使得分類結果的顯著的變動)的分類方法。

Bagging和Boosting?

Bagging的特點在於隨機採樣,隨機採樣(bootsrap)就是從我們的訓練集裡面採集固定個數的樣本,每採集一個樣本后,都將樣本放回,是有放回的隨機抽樣。

對Bagging演算法,有數據集D,一般會隨機採集n次樣本數為D的訓練集,這樣得到的採樣和訓練集樣本的個數相同,但樣本內容不同(因為你可能對某個樣本重複採樣了幾次)。如果對有D個樣本訓練集做n次隨機採樣,由於隨機性,D個採樣集各不相同。

Advertisements

注意到這和GBDT的子採樣是不同的。GBDT的子採樣是無放回採樣,而Bagging的子採樣是放回採樣。

Out Of Bag(OOB)

對於一個樣本,它在某一次含m個樣本的訓練集的隨機採樣中,每次被採集到的概率是1/m。不被採集到的概率為1−1/m。如果m次採樣都沒有被採集中的概率是(1−1/m)^m。當m→∞時,(1−1/m)^m→1/e≃0.368。也就是說,在bagging的每輪隨機採樣中,訓練集中大約有36.8%的數據沒有被採樣集採集中。

對於這部分大約36.8%的沒有被採樣到的數據,我們常常稱之為袋外數據(Out Of Bag,簡稱OOB)。這些數據沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。

Advertisements

bagging對於弱學習器沒有限制,這和Adaboost一樣。但是最常用的一般也是決策樹和神經網路。

bagging的集合策略也比較簡單,對於分類問題,通常使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於回歸問題,通常使用簡單平均法,對T個弱學習器得到的回歸結果進行算術平均得到最終的模型輸出。

由於Bagging演算法每次都進行採樣來訓練模型,因此泛化能力很強,對於降低模型的方差很有作用。當然對於訓練集的擬合程度就會差一些,也就是模型的偏差會大一些。

Bagging演算法流程

以上我們對bagging演算法的原理做了總結,這裡就對bagging演算法的流程做一個總結。相對於Boosting系列的Adaboost和GBDT,bagging演算法要簡單的多。

輸入:樣本集D={(x,y1),(x2,y2),…(xm,ym)},弱學習器演算法,弱分類器迭代次數T。

輸出最終的強分類器f(x)。

演算法步驟:

對於t=1,2…,T:

  • 對訓練集進行第t次隨機採樣,共採集m次,得到包含m個樣本的採樣集Dm

  • 用採樣集Dm訓練第m個弱學習器Gm(x)

如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是回歸演算法,T個弱學習器得到的回歸結果進行算術平均得到的值為最終的模型輸出。

Bagging應用:隨機森林演算法

理解了bagging演算法,隨機森林(RandomForest,以下簡稱RF)就好理解了。它是Bagging演算法的進化版,也就是說,它的思想仍然是bagging,但是進行了獨有的改進。

我們都知道,RF使用了CART決策樹作為弱學習器;在使用決策樹的基礎上,RF對決策樹的建立做了改進,對於普通的決策樹,我們會在節點上所有的N個樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分,但是RF通過隨機選擇節點上的一部分樣本特徵,這個數字小於M,假設為M,然後在這些隨機選擇的M個樣本特徵中,選擇一個最優的特徵來做決策樹的左右子樹劃分。這樣進一步增強了模型的泛化能力。    

如果M=N,則此時RF的CART決策樹和普通的CART決策樹沒有區別。M越小,則模型魯棒性越強,當然此時對於訓練集的擬合程度會變差。也就是說M越小,模型的方差會減小,但是偏差會增大。在實際案例中,一般會通過交叉驗證調參獲取一個合適的M的值。

Refrence

http://www.cnblogs.com/pinard/p/6156009.html

Advertisements

你可能會喜歡