Boosting.md
Boosting 是一種強大的集成學習方法,透過逐步訓練一系列弱學習器(如淺層決策樹),每個模型都試圖修正前一個模型犯下的錯誤,最終組合成強大的預測器。
1. 基本流程
Boosting 的基本流程如下:
初始化模型並計算初始誤差。
每一輪訓練一個新的弱模型,聚焦在前一輪預測錯誤的樣本上(給予較高權重)。
將新的模型加入整體模型中,根據權重調整合併方式。
重複直到達到預設迭代次數或誤差停止改善。
2. 代表演算法
(1) AdaBoost(Adaptive Boosting)
每輪調整樣本權重,強化模型對錯誤分類樣本的學習。
適合用於二元分類問題。
(2) Gradient Boosting
使用梯度下降法最小化任意損失函數。
可應用於分類與回歸問題。
(3) XGBoost / LightGBM / CatBoost
高效能的 Gradient Boosting 實作,支援並行、剪枝、正則化與缺失值處理。
在資料科學競賽中廣泛使用。
3. 優點與缺點
優點
缺點
擬合能力強,能處理複雜關係
訓練時間長,需謹慎調參
可使用不同損失函數
對雜訊敏感,可能過擬合
支援特徵重要性分析
難以平行化(部分演算法例外)
4. Python 實作:Gradient Boosting
from sklearn.ensemble import GradientBoostingClassifier
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)
# 建立與訓練模型
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3)
clf.fit(X_train, y_train)
# 預測與評估
y_pred = clf.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
5. 應用場景
信用風險建模
醫療預測與風險評估
顧客流失分析
Kaggle 資料競賽
Boosting 是在建模精度與表現上最為強大的方法之一,適合對結果要求高的任務。透過對錯誤的逐步修正與模型疊加,能在保持模型可解釋性的同時,獲得優異的預測效能。
Last updated