Bagging.md

Bagging(Bootstrap Aggregating)是一種集成學習技術,透過隨機取樣與多模型平均來降低模型的變異性與過擬合風險,特別適用於高方差模型如決策樹。


1. 基本概念

Bagging 的流程如下:

  1. 從原始訓練資料中使用 bootstrap(有放回)方式抽樣,生成多個資料子集。

  2. 在每個子集上分別訓練一個基模型(例如決策樹)。

  3. 對於分類任務,最終預測使用多數投票;對於回歸任務,使用平均值。

這種方式能降低模型的變異性,進而提升泛化能力。


2. 優勢

  • 降低過擬合風險:即便基模型容易過擬合,Bagging 可透過集成減少變異。

  • 可併行訓練模型:每個基模型獨立訓練,可進行並行運算。

  • 提升穩定性:對於輸入資料的小變動不會造成結果大幅波動。


3. 典型實作:Random Forest

Random Forest 就是以 Bagging 為基礎的集成方法,並在訓練每棵樹時加入隨機特徵選擇以增強多樣性。

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 載入資料
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Bagging 模型
base = DecisionTreeClassifier()
bag = BaggingClassifier(base_estimator=base, n_estimators=100, random_state=42)
bag.fit(X_train, y_train)

# 預測與評估
y_pred = bag.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

4. 常見應用

  • 決策樹的穩定性提升

  • 難以處理高變異資料的建模任務

  • 提高小型樣本集模型的一致性


Bagging 是一種簡單卻強大的集成方法,尤其適合與不穩定學習器(如決策樹)搭配使用。透過多次抽樣與結果平均,它能有效減少模型對訓練資料的依賴,增強整體穩健性。

Last updated