8.Ensembling_Methods

集成學習(Ensemble Learning)是將多個模型結合起來以提升預測表現的技術,透過多模型的整合能有效降低偏差(bias)、變異(variance),並提高泛化能力。


1. 類型分類

集成方法主要分為以下三大類:

方法類型
核心策略
特徵

Bagging

並行訓練子模型,降低變異

高穩定性、可並行運算

Boosting

順序訓練子模型,矯正前模型錯誤

漸進式學習、能減偏差

Stacking

多層模型結合最終輸出

結合異質模型、提升靈活性


2. Bagging(Bootstrap Aggregating)

從訓練集中有放回地抽樣子資料集,分別訓練多個模型,最後使用平均(回歸)或投票(分類)方式整合預測結果。

常見方法:

  • Random Forest:基於 Bagging 的決策樹集成,透過隨機選擇特徵減少相關性。

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)

3. Boosting

每一輪模型學習前一輪的殘差,聚焦難分類樣本。

常見方法:

  • AdaBoost:依照錯誤率分配樣本權重。

  • Gradient Boosting:以梯度下降優化損失函數。

  • XGBoost / LightGBM:效能與準確率優化的梯度提升樹實作。

from sklearn.ensemble import GradientBoostingClassifier
clf = GradientBoostingClassifier(n_estimators=100)
clf.fit(X_train, y_train)

4. Stacking(堆疊泛化)

利用多個基模型(level-0),並將其預測結果作為新特徵,輸入至最終的模型(level-1)進行預測。

from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC

estimators = [('svc', SVC(probability=True)), ('rf', RandomForestClassifier())]
stacking = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression())
stacking.fit(X_train, y_train)

5. 優缺點比較

方法
優點
缺點

Bagging

降低變異、提升穩定性

不易改善偏差

Boosting

減少偏差、擬合能力強

訓練耗時、對噪聲較敏感

Stacking

結合多種模型、擴展性佳

易過擬合、結構複雜


集成學習是提升模型效能的重要利器。根據資料特性與模型需求選擇適當策略,常可顯著提升預測表現,並廣泛應用於競賽、金融、生醫、推薦系統等領域。

Last updated