集成学习实战: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 多模型组合 综合优势 竞赛/复杂场景
相关推荐
allnlei5 分钟前
线性回归(Linear Regression)
机器学习·回归·线性回归
张继雁1 小时前
30~50MPa数控高压清洗:前端分级过滤逻辑,抑制硬质磨粒对喷嘴冲蚀
大数据·数据库·人工智能·机器学习·创业创新
小蒋观天下1 小时前
【安防AI工程实战二】AI摄像头帧率抖动根治:ISP曝光时序与AI推理时序冲突深度定位
人工智能·深度学习·算法·安全·机器学习·ai大模型
鼓掌MVP1 小时前
决定全案的智能Agent
大数据·人工智能·机器学习
梦想的初衷~2 小时前
从通量数据到SCI论文——AI-R语言生态系统碳水热通量及其机制分析与论文实战
人工智能·机器学习·r语言·r 语言·fluxnet·涡度·生态系统碳通量
码爸10 小时前
线性回归算法
算法·机器学习·线性回归
别动我齐刘海11 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
没有钱的钱仔13 小时前
协方差矩阵含义
算法·机器学习·矩阵
码爸15 小时前
决策树介绍与示例
python·算法·机器学习
小宋102117 小时前
GRPO训练工具Agent:环境、Rollout、可验证奖励与失败复盘
人工智能·深度学习·机器学习