1. 程式人生 > >2. 整合學習(Ensemble Learning)Bagging

2. 整合學習(Ensemble Learning)Bagging

1. 前言

前面從整體的角度介紹了整合學習演算法,整合學習演算法分為Bagging、Boosting、Stacking。Bagging的特點是各個弱學習器之間沒有依賴關係,Boosting的特點是各個弱學習器之間有依賴關係,Stacking的特點是在多個學習器的基礎上再加一個機器學習演算法進行預測。

2. Bagging原理

Bagging的原理可以通過下圖清楚的看到。

image

Bagging的原理是隨機取樣,就是在我們的訓練集裡面採集固定個數的樣本,但是每採集一個樣本後,都將樣本放回。所以之前採集到的樣本在放回後有可能繼續被採集到。對於我們的Bagging演算法,得到的取樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有\(m\)

個樣本訓練集做\(T\)次的隨機取樣,,則由於隨機性,\(T\)個取樣集各不相同。

這裡還有一個有意思的地方,由於是隨機取樣,我們的所有樣本中,有一些樣本會一直沒有采樣到,這個樣本的數量大約是所有樣本的36.8%。我們稱這部分資料為袋外資料(Out Of Bag,簡稱OOB)。這些資料沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。有了OOB我們就不需要重新分離test集合,後面用OOB代替test集合進行驗證。這樣訓練集的取樣空間就是整個資料集,這樣訓練集的資料分佈就更加接近真實的資料分佈

Bagging的集合策略也比較簡單,對於分類問題,使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於迴歸問題,使用簡單平均法

,對T個弱學習器得到的迴歸結果進行算術平均得到最終的模型輸出。

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

3. Bagging演算法流程

本節就對Bagging演算法的流程做一個總結。相對於Boosting系列的Adaboost和GBDT,Bagging演算法要簡單的多。

輸入為樣本集\(D={(x_1,y_1),(x_2,y_2),...(x_m,y_m)}\),弱學習器演算法, 弱分類器迭代次數T。

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

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

4. 總結

本文詳細的介紹了下Bagging的一些細節,Bagging的思想是比較簡單的,但是裡面蘊含這巨大的力量,用了Bagging的演算法能夠有效的減少過擬合的程度,因為弱學習器之間沒有依賴關係,所以可以並行訓練,大幅度提升訓練速度。下文介紹Bagging的優秀演算法隨機森林(Random Forest)。

(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected]