集成学习实战:Bagging/Boosting/Stacking

集成学习实战:Bagging/Boosting/Stacking

1. 集成学习原理

复制代码
集成学习(Ensemble Learning):
├── 核心思想:多个弱学习器组合成强学习器
├── 三大方法:
│   ├── Bagging:并行训练,投票/平均(随机森林)
│   ├── Boosting:串行训练,逐步纠错(XGBoost)
│   └── Stacking:多层模型,元学习器组合
└── 优势:降低方差、降低偏差、提高泛化能力

2. Bagging

python 复制代码
from sklearn.ensemble import BaggingClassifier, BaggingRegressor
from sklearn.tree import DecisionTreeClassifier

# Bagging 分类
bagging = BaggingClassifier(
    estimator=DecisionTreeClassifier(),
    n_estimators=100,
    max_samples=0.8,
    max_features=0.8,
    bootstrap=True,
    random_state=42,
    n_jobs=-1
)
bagging.fit(X_train, y_train)

3. Boosting

python 复制代码
# AdaBoost
from sklearn.ensemble import AdaBoostClassifier
ada = AdaBoostClassifier(
    n_estimators=100,
    learning_rate=0.1,
    random_state=42
)
ada.fit(X_train, y_train)

# Gradient Boosting
from sklearn.ensemble import GradientBoostingClassifier
gb = GradientBoostingClassifier(
    n_estimators=100,
    max_depth=3,
    learning_rate=0.1,
    subsample=0.8,
    random_state=42
)
gb.fit(X_train, y_train)

# XGBoost
import xgboost as xgb
xgb_clf = xgb.XGBClassifier(
    n_estimators=100,
    max_depth=6,
    learning_rate=0.1,
    random_state=42
)
xgb_clf.fit(X_train, y_train)

# LightGBM
import lightgbm as lgb
lgb_clf = lgb.LGBMClassifier(
    n_estimators=100,
    max_depth=6,
    learning_rate=0.1,
    random_state=42
)
lgb_clf.fit(X_train, y_train)

4. Stacking

python 复制代码
from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression

# 定义基学习器
estimators = [
    ('rf', RandomForestClassifier(n_estimators=100)),
    ('svm', SVC(probability=True)),
    ('xgb', xgb.XGBClassifier(n_estimators=100))
]

# Stacking
stacking = StackingClassifier(
    estimators=estimators,
    final_estimator=LogisticRegression(),
    cv=5,
    n_jobs=-1
)
stacking.fit(X_train, y_train)

5. 投票集成

python 复制代码
from sklearn.ensemble import VotingClassifier

# 硬投票
voting_hard = VotingClassifier(
    estimators=estimators,
    voting='hard'
)

# 软投票(概率平均)
voting_soft = VotingClassifier(
    estimators=estimators,
    voting='soft'
)

总结

方法 代表算法 优势 适用场景
Bagging 随机森林 降低方差 高方差模型
Boosting XGBoost 降低偏差 高偏差模型
Stacking 多模型组合 综合优势 竞赛/复杂场景
相关推荐
wumingxiaoyao12 小时前
从 0 开始学 AI:第 2 课,AI、机器学习、深度学习和大模型是什么关系?
人工智能·深度学习·机器学习·ai·大模型·llm
phoenix@Capricornus12 小时前
单位球面在线性变换下的像以及线性变换诱导的加权 2-范数的等值面(To 战老师)
线性代数·机器学习·矩阵
shushangyun_14 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
z小猫不吃鱼16 小时前
03 Optimal Brain Surgeon 详解:Hessian 剪枝为什么有效?
算法·机器学习·剪枝
weixin_4000056018 小时前
RL-frenet-trajectory-planning-in-CARLA
人工智能·深度学习·算法·机器学习·自动驾驶
大鱼>18 小时前
超参数调优进阶:Optuna/Bayesian/Early Stopping
人工智能·学习·机器学习·聚类
z小猫不吃鱼18 小时前
02 Optimal Brain Damage 详解:二阶信息剪枝的起点
算法·机器学习·剪枝
m0_6265352018 小时前
近似attention
人工智能·算法·机器学习
大鱼>19 小时前
模型可解释性:特征重要性/SHAP/LIME
人工智能·python·机器学习·lstm