机器学习 - 堆叠集成(Stacking)

摘要:堆叠集成(Stacking)是一种机器学习集成技术,通过分层组合多个基础模型和元模型提升预测性能。其核心流程包括:先用不同算法训练基础模型,再将它们的预测结果作为输入训练元模型,最终由元模型输出预测结果。该方法利用交叉验证避免过拟合,通过组合多样化的基础模型(如随机森林、梯度提升)和元模型(如逻辑回归)实现性能优化。示例代码在鸢尾花数据集上实现了96.67%的准确率,验证了堆叠集成通过模型互补提升预测效果的优势。

目录

[机器学习 - 堆叠集成(Stacking)](#机器学习 - 堆叠集成(Stacking))

示例

代码说明

输出结果


机器学习 - 堆叠集成(Stacking)

堆叠集成(Stacking),又称堆叠泛化(stacked generalization),是机器学习中的一种集成学习技术。它通过分层组合多个模型,以提升预测准确率。该技术的核心流程是:先在原始训练数据集上训练一组基础模型(base models),再将这些基础模型的预测结果作为输入,训练一个元模型(meta-model),最终由元模型输出最终预测结果。

堆叠集成的核心思想是:利用多个模型的优势,通过合理组合弥补各自的不足。通过选用一组假设不同、能捕捉数据不同特征的多样化模型,可提升整个集成系统的综合预测能力。

堆叠技术可分为两个阶段:

  1. 基础模型训练阶段(Base Model Training):在该阶段,一组基础模型在原始训练数据上进行训练。这些模型可以是任意类型,例如决策树、随机森林、支持向量机、神经网络或其他任何算法。每个模型在训练数据的一个子集上训练,并对剩余的数据点生成一组预测结果。
  2. 元模型训练阶段(Meta-model Training):在该阶段,基础模型的预测结果被用作元模型的输入,而元模型则在原始训练数据上进行训练。元模型的目标是学习如何组合基础模型的预测结果,以生成更准确的预测。元模型同样可以是任意类型,例如线性回归、逻辑回归或其他算法。为避免过拟合,元模型的训练通常采用交叉验证(cross-validation)方法。

元模型训练完成后,即可用于新数据的预测:先通过所有基础模型得到预测结果,再将这些结果输入元模型,由元模型输出最终预测值。基础模型的预测结果可通过多种方式组合,例如取平均值、加权平均值或最大值等。

示例

以下是使用 scikit-learn 库在 Python 中实现堆叠集成的示例代码:

python 复制代码
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_predict
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from mlxtend.classifier import StackingClassifier
from sklearn.metrics import accuracy_score

# 加载鸢尾花(iris)数据集
iris = load_iris()
X, y = iris.data, iris.target

# 定义基础模型
rf = RandomForestClassifier(n_estimators=10, random_state=42)  # 随机森林分类器
gb = GradientBoostingClassifier(random_state=42)  # 梯度提升分类器

# 定义元模型
lr = LogisticRegression()  # 逻辑回归分类器

# 定义堆叠分类器(组合基础模型和元模型)
stack = StackingClassifier(classifiers=[rf, gb], meta_classifier=lr)

# 使用交叉验证生成元模型的训练数据(预测结果)
y_pred = cross_val_predict(stack, X, y, cv=5)

# 评估堆叠模型的性能(使用准确率指标)
acc = accuracy_score(y, y_pred)
print(f"准确率: {acc}")

代码说明

  1. 加载数据集:使用 load_iris() 加载鸢尾花数据集,该数据集包含花的特征数据(X)和类别标签(y)。
  2. 定义基础模型:选用随机森林分类器(RandomForestClassifier)和梯度提升分类器(GradientBoostingClassifier)作为基础模型,两种模型具有不同的算法逻辑,可互补捕捉数据特征。
  3. 定义元模型:选用逻辑回归(LogisticRegression)作为元模型,用于整合基础模型的预测结果。
  4. 构建堆叠分类器:通过 StackingClassifier 类组合基础模型和元模型,形成完整的堆叠集成模型。
  5. 交叉验证预测:使用 cross_val_predict 函数通过 5 折交叉验证(cv=5)生成元模型的输入数据(即基础模型在不同数据子集上的预测结果),避免过拟合。
  6. 性能评估:使用准确率(accuracy_score)指标评估堆叠模型的预测效果。

输出结果

运行代码后,将得到以下输出:

plaintext

python 复制代码
准确率: 0.9666666666666667

该结果表明,堆叠集成模型在鸢尾花数据集上的预测准确率约为 96.67%,体现了其通过组合多个模型提升预测性能的优势。

相关推荐
2601_955662465 分钟前
抖音视频怎么做多语言配音?2026年AI配音工具与制作流程详解
人工智能·音视频·语音识别·视频
2601_968354517 分钟前
类似 WordBuddy 的软件有哪些?各有什么优点?
人工智能
一抹烟霞11 分钟前
PCHIP 保形三次 Hermite 连续化
人工智能
pt104315 分钟前
面向AI的Cisco UCS X-Series设计-2:Cisco UCS AI规格选型
运维·人工智能
把头塞进显示器16 分钟前
电商平台-测试报告
python·selenium·pytest
禁默16 分钟前
从一行需求到压测波峰:我用 Seed-2.1-pro-0915 从 0 交付了一套分布式任务看板
人工智能·ai·seed-2.1-pro
ShyanZh18 分钟前
【Python3基础】01-Python 环境与开发工具
python
醇氧22 分钟前
Git 合并冲突与`__pycache__` 的恩怨情仇
python·numpy·fastapi
55873 生态系统22 分钟前
技术第4篇,【架构实战】55873 双层安全风控架构:Rust 底层硬拦截 + AI 语义研判双保险设计全解
人工智能·55873全域文明生态体系·55873操作系统·全域文明生态系统·55873技术底座
天远Date Lab23 分钟前
零信任架构实战:基于天远手机在网状态V即时版构建自动化通信网关
人工智能·ai·工具分享