本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術!
Bagging 介紹
1. 定義與全稱:
- Bagging 是 Bootstrap Aggregating 的縮寫,中文常譯為 裝袋法。
- 它是一種并行式的集成學習方法。
- 核心目標是通過構建多個基學習器的預測結果進行組合(通常是投票或平均),來獲得比單一基學習器更穩定、更準確、泛化能力更強的模型。
- 其名字直接反映了它的兩個關鍵步驟:Bootstrap(自助采樣) 和 Aggregating(聚合)。
往期文章推薦:
- 20.CART算法全解析:分類回歸雙修的決策樹之王
- 19.C4.5算法深度解析:決策樹進化的里程碑
- 18.決策樹:化繁為簡的智能決策利器
- 17.深入解析ID3算法:信息熵驅動的決策樹構建基石
- 16.類圖:軟件世界的“建筑藍圖”
- 15.餅圖:數據可視化的“切蛋糕”藝術
- 14.用Mermaid代碼畫ER圖:AI時代的數據建模利器
- 13.ER圖:數據庫設計的可視化語言 - 搞懂數據關系的基石
- 12.決策樹:被低估的規則引擎,80%可解釋性需求的首選方案
- 11.實戰指南:用DataHub管理Hive元數據
- 10.一鍵規范代碼:pre-commit自動化檢查工具實戰指南
- 9.如何數據的永久保存?將信息以加密電磁波形式發射至太空實現永久保存的可行性說明
- 8.NLP已死?大模型時代誰在悄悄重建「語言巴別塔」
- 7.撕掉時序圖復雜度:Mermaid可視化極簡實戰指南
- 6.動手實踐:LangChain流圖可視化全解析
- 5.LangChain LCEL:三行代碼構建AI工作流的秘密
- 4.LangChain執行引擎揭秘:RunnableConfig配置全解析
- 3.避坑指南:Windows下pygraphviz安裝全攻略
- 2.Python3安裝MySQL-python踩坑實錄:從報錯到完美解決的實戰指南
- 1.Git可視化革命:3分鐘學會用Mermaid+AI畫專業分支圖
2. 核心思想:
Bagging 的基本思想非常簡單而強大:
- 引入隨機性: 通過對原始訓練數據集進行 有放回的隨機抽樣(Bootstrap Sampling),創建出多個不同的、略有重疊的子訓練集。
- 并行訓練: 使用這些不同的子訓練集,獨立地訓練出多個 同質的 基學習器。這些學習器通常是同一種算法(例如都是決策樹)。
- 聚合結果: 對于一個新的預測樣本,讓所有訓練好的基學習器進行預測,然后將它們的預測結果進行聚合:
- 分類任務: 采用 多數投票法(Majority Voting),即選擇得票最多的類別作為最終預測結果。
- 回歸任務: 采用 簡單平均法(Averaging),即計算所有基學習器預測值的平均值作為最終預測結果。
3. 關鍵步驟詳解:
-
Bootstrap Sampling (自助采樣):
- 假設原始訓練集
D
包含N
個樣本。 - 要訓練
T
個基學習器,就需要創建T
個 bootstrap 樣本集D_1, D_2, ..., D_T
。 - 生成每個
D_t
的過程:- 從原始訓練集
D
中有放回地隨機抽取一個樣本。 - 將該樣本放入
D_t
中。 - 重復步驟 1 和 2
N
次。這樣D_t
就包含了N
個樣本(注意:因為有放回,某些樣本會被多次抽中,而另一些樣本可能一次都沒被抽中)。
- 從原始訓練集
- 重要特性:
- 每個 bootstrap 樣本集
D_t
的大小與原始訓練集D
相同(N
個樣本)。 - 由于有放回抽樣,原始訓練集
D
中大約有 63.2% 的樣本會出現在任意一個給定的D_t
中。剩下的約 36.8% 的樣本被稱為該基學習器的 袋外樣本。 - 不同的 bootstrap 樣本集之間會有一定的重疊,但也存在差異。
- 每個 bootstrap 樣本集
- 假設原始訓練集
-
Base Learner Training (基學習器訓練):
- 使用第
t
個 bootstrap 樣本集D_t
獨立地訓練第t
個基學習器M_t
。 - 基學習器可以是任何學習算法(決策樹、神經網絡、線性回歸等),但決策樹因其高方差(不穩定)特性,常作為 Bagging 的首選基學習器(這就是隨機森林的基礎)。
- 訓練過程是并行的,各個基學習器之間互不干擾。
- 使用第
-
Aggregating (聚合):
- 分類 (Classification):
- 對于一個新的輸入樣本
x
,每個基學習器M_t
預測一個類別標簽y_t
。 - 最終的預測結果
y_final
是所有T
個預測標簽{y_1, y_2, ..., y_T}
中出現次數最多的那個類別(即多數投票)。
- 對于一個新的輸入樣本
- 回歸 (Regression):
- 對于一個新的輸入樣本
x
,每個基學習器M_t
預測一個數值r_t
。 - 最終的預測結果
r_final
是所有T
個預測值{r_1, r_2, ..., r_T}
的算術平均值。
- 對于一個新的輸入樣本
- 分類 (Classification):
4. 為什么 Bagging 有效?
Bagging 的核心價值在于它能夠顯著降低模型的方差(Variance),從而提高模型的穩定性和泛化能力,尤其對于高方差、低偏差的基學習器(如深度未剪枝的決策樹)效果非常顯著。
- 降低方差: 通過在不同的數據子集上訓練多個模型,Bagging 減少了模型對訓練數據中特定噪聲或波動的敏感性。單個模型可能因為訓練數據的微小變化而產生很大差異(高方差),但多個模型預測的平均或投票可以抵消這種波動,使得整體預測更加穩定和魯棒。
- 輕微增加偏差: 由于每個基學習器只看到原始數據的部分樣本(約63.2%),并且可能沒有看到一些重要樣本(袋外樣本),單個基學習器的性能可能略低于在整個數據集上訓練的模型(輕微增加偏差)。但是,通過聚合多個模型,這種輕微的偏差增加通常被方差的顯著降低所補償,最終整體模型效果更好。
- 降低過擬合風險: 通過降低方差,Bagging 有效地減少了模型過擬合訓練數據的風險,提高了在未見數據上的泛化能力。
5. 優勢:
- 有效降低方差: 對高方差的基學習器(如決策樹)效果尤其顯著。
- 提升模型穩定性與魯棒性: 對訓練數據的小變動不敏感,對噪聲和異常值更具抵抗力。
- 減少過擬合: 提高泛化性能。
- 并行化: 基學習器的訓練相互獨立,天然適合并行計算,加速訓練。
- 簡單易用: 概念清晰,實現相對直接。
- 內置驗證(利用袋外樣本): 袋外樣本可以用來評估單個基學習器的性能,它們的預測誤差的平均值(袋外誤差)可以作為Bagging集成模型泛化誤差的一個近似無偏估計,無需額外劃分驗證集。
6. 局限性:
- 對高偏差模型提升有限: 如果基學習器本身偏差很高(欠擬合),Bagging 主要降低方差,對整體性能提升不大(偏差問題依然存在)。它不能有效降低偏差。
- 模型解釋性降低: 集成的模型比單個基學習器更難解釋。
- 計算成本: 需要訓練多個模型,計算和存儲開銷大于單個模型。
- 可能損失部分信息: 每個基學習器只看到部分數據(約63.2%)。
7. 與 Boosting 的區別:
- 并行 vs 串行: Bagging 是并行訓練基學習器;Boosting(如 AdaBoost, GBDT, XGBoost)是串行訓練,后續模型重點關注之前模型預測錯誤的樣本。
- 樣本權重: Bagging 中所有樣本在抽樣時默認權重相同;Boosting 會根據之前模型的預測表現動態調整樣本權重,錯誤樣本權重增大。
- 目標: Bagging 主要降低方差;Boosting 主要降低偏差(并能一定程度降低方差)。
- 基學習器要求: Bagging 對基學習器要求不高,甚至可以是弱學習器(但效果會打折扣);Boosting 通常要求基學習器是弱學習器(僅比隨機猜測略好)。
- 穩定性: Bagging 模型更穩定;Boosting 模型對數據和參數更敏感,容易過擬合(需仔細調參和正則化)。
8. 典型應用:
- 隨機森林: 這是 Bagging 最著名和最成功的應用。它以決策樹為基學習器,并在 Bagging 的基礎上額外引入了特征隨機性(在節點分裂時隨機選擇特征子集),進一步增強了多樣性和效果。
- 其他模型的 Bagging 變體: 理論上,任何學習算法都可以作為 Bagging 的基學習器(如 Bagged KNN, Bagged SVMs 等),但決策樹因其不穩定性而受益最大。
- 需要高穩定性模型的場景。
總結:
Bagging 是一種強大且實用的集成學習技術,其核心在于通過 Bootstrap 自助采樣生成多樣化的訓練子集,并行訓練多個基學習器,然后通過投票(分類)或平均(回歸) 聚合它們的預測結果。它最擅長降低高方差模型的方差,從而提升模型的穩定性、魯棒性和泛化能力,減少過擬合風險。隨機森林是 Bagging 思想的杰出代表和擴展。理解 Bagging 是深入掌握集成學習,特別是隨機森林的關鍵基礎。
本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術!