2. 集成學習(Ensemble Learning)Bagging
1. 前言
前面從整體的角度介紹了集成學習算法,集成學習算法分為Bagging、Boosting、Stacking。Bagging的特點是各個弱學習器之間沒有依賴關系,Boosting的特點是各個弱學習器之間有依賴關系,Stacking的特點是在多個學習器的基礎上再加一個機器學習算法進行預測。
2. Bagging原理
Bagging的原理可以通過下圖清楚的看到。
Bagging的原理是隨機采樣,就是在我們的訓練集裏面采集固定個數的樣本,但是每采集一個樣本後,都將樣本放回。所以之前采集到的樣本在放回後有可能繼續被采集到。對於我們的Bagging算法,得到的采樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有\(m\)
這裏還有一個有意思的地方,由於是隨機采樣,我們的所有樣本中,有一些樣本會一直沒有采樣到,這個樣本的數量大約是所有樣本的36.8%。我們稱這部分數據為袋外數據(Out Of Bag,簡稱OOB)。這些數據沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。有了OOB我們就不需要重新分離test集合,後面用OOB代替test集合進行驗證。這樣訓練集的采樣空間就是整個數據集,這樣訓練集的數據分布就更加接近真實的數據分布。
Bagging的集合策略也比較簡單,對於分類問題,使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於回歸問題,使用簡單平均法
由於Bagging算法每次都進行采樣來訓練模型,因此泛化能力很強,對於降低模型的方差很有作用,即降低過擬合程度。當然對於訓練集的擬合程度就會差一些,也就是模型的偏倚會大一些。
3. Bagging算法流程
本節就對Bagging算法的流程做一個總結。相對於Boosting系列的Adaboost和GBDT,Bagging算法要簡單的多。
輸入為樣本集\(D={(x_1,y_1),(x_2,y_2),...(x_m,y_m)}\),弱學習器算法, 弱分類器叠代次數T。
輸出為最終的強分類器f(x)
- 對於\(t=1,2...,T\):
- 對訓練集進行第t次隨機采樣,共采集\(m\)
- 用采樣集\(D_t\)訓練第\(t\)個弱學習器\(G_t(x)\)
- 對訓練集進行第t次隨機采樣,共采集\(m\)
- 如果是分類算法預測,則\(T\)個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是回歸算法,\(T\)個弱學習器得到的回歸結果進行算術平均得到的值為最終的模型輸出。
4. 總結
本文詳細的介紹了下Bagging的一些細節,Bagging的思想是比較簡單的,但是裏面蘊含這巨大的力量,用了Bagging的算法能夠有效的減少過擬合的程度,因為弱學習器之間沒有依賴關系,所以可以並行訓練,大幅度提升訓練速度。下文介紹Bagging的優秀算法隨機森林(Random Forest)。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected])
2. 集成學習(Ensemble Learning)Bagging