集成学习实战: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 多模型组合 综合优势 竞赛/复杂场景
相关推荐
宣宣猪的小花园.9 小时前
【机器学习】过拟合与泛化:模型为什么会“刷题很强、实战失灵”
人工智能·算法·机器学习
江畔柳前堤11 小时前
On-Policy Distillation 全景深潜
人工智能·网络协议·目标检测·http·机器学习·chatgpt·重构
Q264336502312 小时前
【有i源码】基于大数据的城市交通流量与出行特征可视化分析平台-基于Hadoop的城市交通拥堵关联规则与异常检测研究
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·数据可视化
尘世中一位迷途小书童14 小时前
我为什么在 Windows 上做了一个翻译软件:SnapLingo
前端·人工智能·机器学习
别动我齐刘海14 小时前
ROS2 Jazzy + C++ 实战路线——基础学习1
c++·vscode·python·ubuntu·机器学习·自动驾驶·github
wuyk55515 小时前
3.ROS2 Humble 命令行操作详解【VMware Ubuntu22.04 实操】
物联网·机器学习·机器人
龙腾AI白云1 天前
孪生不止在工厂:能源、医疗与农业
人工智能·机器学习·scikit-learn·知识图谱
YFJ_mily1 天前
9.24早鸟通道即将关闭|IMRA2026智能制造机器人自动化IEEE会议|往届EI稳定检索,设有学生专属投稿权益
人工智能·机器学习·机器人·自动化·智能制造·rdlink研发家·马鞍山会议
renhongxia11 天前
数字孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·算法·机器学习·数字孪生
猿人谷1 天前
BRP,如何用“反向构造”让黑盒对抗 Patch 更省查询?
神经网络·机器学习·图像识别