Skip to content

提升方法

提升方法(Boosting)是一类集成学习算法。它把多个弱学习器按顺序组合起来,后一个模型重点修正前一个模型的错误,最终形成强学习器。

概念详解

最终模型通常写成多个基模型的加权和:

FM(x)=m=1Mαmhm(x)

其中 hm(x) 是第 m 个弱学习器,αm 是该学习器的权重。

AdaBoost 推导

初始化样本权重:

D1(i)=1N

m 个弱分类器的加权错误率为:

em=i=1NDm(i)I(hm(xi)yi)

分类器权重为:

αm=12ln1emem

随后更新样本权重:

Dm+1(i)=Dm(i)exp(αmyihm(xi))Zm

若样本分类错误,则 yihm(xi)=1,权重会乘以 exp(αm),下一轮更关注它。

应用代码

python
from sklearn.datasets import make_classification
from sklearn.ensemble import AdaBoostClassifier, GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = make_classification(n_samples=500, n_features=10, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

models = [
    AdaBoostClassifier(n_estimators=50, learning_rate=0.8, random_state=0),
    GradientBoostingClassifier(n_estimators=80, learning_rate=0.05, random_state=0)
]

for model in models:
    model.fit(X_train, y_train)
    pred = model.predict(X_test)
    print(type(model).__name__, accuracy_score(y_test, pred))

小结

提升方法的核心是逐步修正错误。它通常预测能力较强,但也更容易受噪声样本影响,需要控制学习率、树深度和迭代轮数。