Bagging算法

集成學習有兩個流派,一個是boosting派系,它的特點是各個弱學習器之間有依賴關係。另一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合。

Bagging算法(英語:Bootstrap aggregating,引導聚集算法),又稱裝袋算法,是機器學習領域的一種團體學習算法。最初由Leo Breiman於1996年提出。Bagging算法可與其他分類、迴歸算法結合,提高其準確率、穩定性的同時,通過降低結果的方差,避免過擬合的發生。

1.什麼是Bagging??

Bagging原理圖如下


分別構造多個弱學習器,多個弱學習器相互之間是並行的關係,可以同時訓練,最終將多個弱學習器結合。

特點在於隨機採樣,那麼什麼是隨機採樣(自組採樣)呢?
隨機採樣(bootstrap sample)從n個數據點中有放回重複隨機抽取一個樣本(即同一個樣本可被多次抽取),共抽取n次。創建一個與原數據大小相同得數據集,但有些數據點會缺失(大約1/3),有些會重複。

舉例說明:
原數據集:[‘a’, ‘b’, ‘c’, ‘d’]
隨機採樣1:[‘c’, ‘d’, ‘c’, ‘a’]
隨機採樣2:[‘d’, ‘d’, ‘a’, ‘b’]

對於缺失得數據點我們常常稱之爲袋外數據(Out Of Bag, 簡稱OOB)。這些數據沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。

注:GBDT的子採樣是無放回採樣,而Bagging的子採樣是放回採樣。

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

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

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

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

輸出爲最終的強分類器f(x)
    1)對於t=1,2…,T:

a)對訓練集進行第t次隨機採樣,共採集m次,得到包含m個樣本的採樣集Dt
      b)用採樣集Dt訓練第t個弱學習器Gt(x)
    2) 如果是分類算法預測,則T個弱學習器投出最多票數的類別或者類別之一爲最終類別。如果是迴歸算法,T個弱學習器得到的迴歸結果進行算術平均得到的值爲最終的模型輸出。

3.總結
先談談什麼是偏差和方差?
偏差:模型預測值的期望與真實值之間的差異,反應的是模型的擬合能力。
方差:反應的是訓練集的變化所導致的學習性能的變化,即刻畫了數據擾動所造成的影響,模型過擬合時會出現較大的方差。
而Bagging是對多個弱學習器求平均,這樣能減少模型的方差,從而提高模型穩定性。

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

Bagging + 決策樹 = 隨機森林

參考:
參考
python機器學習基礎教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章