集成学习实战: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 多模型组合 综合优势 竞赛/复杂场景
相关推荐
陕西企来客8 分钟前
生成式引擎优化(GEO)行业白皮书:从流量分配到认知占有的战略跃迁
人工智能·算法·机器学习·技术好geo优化
m沐沐39 分钟前
【深度学习】循环神经网络RNN——结构、原理与长期依赖问题解析
人工智能·pytorch·python·rnn·深度学习·算法·机器学习
workflower1 小时前
情境感知系统
人工智能·机器学习·设计模式·自然语言处理·机器人
AAIshangyanxiu2 小时前
Python 机器学习与深度学习气象水文海洋全域应用技术体系:地学时空数据 AI 建模、数值模式后处理、气象海洋水文智能预测与数据处理
人工智能·python·机器学习·水文气象·气象预测·气象海洋
fl1768312 小时前
电力场景配网耐张线夹绝缘保护套安装状态检测数据集VOC+YOLO格式2375张2类别
人工智能·yolo·机器学习
祝威廉3 小时前
四条语句跑完机器学习:让模型成为一个 SQL 函数
人工智能·sql·机器学习
wechat_Neal4 小时前
机器学习生命周期的核心环节
人工智能·机器学习
天天进步20155 小时前
Python全栈项目--基于机器学习的金融风险评估系统
开发语言·python·机器学习
Allen_LVyingbo6 小时前
基于结构化电子病历的临床风险预测模型构建与大模型协同优化
python·安全·机器学习·docker·vim·健康医疗
可以飞的话14 小时前
一、机器学习概述
人工智能·机器学习