机器学习 - 堆叠集成(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%,体现了其通过组合多个模型提升预测性能的优势。

相关推荐
TheRouter几秒前
构建一个支持多模型的 AI 聊天应用:React + TheRouter API 全栈教程
前端·人工智能·react.js
70asunflower2 分钟前
大模型推理与部署完全指南:从个人设备到企业集群
人工智能·大模型
广州山泉婚姻3 分钟前
VSCode中切换Python虚拟环境失败的原因
python
輕華7 分钟前
角点检测与SIFT特征提取:OpenCV实战指南
人工智能·opencv·计算机视觉
沪漂阿龙7 分钟前
深度剖析神经网络学习:从损失函数到SGD,手写数字识别完整实战
人工智能·神经网络·学习
七夜zippoe9 分钟前
OpenClaw Skills 技能系统入门:打造可扩展的 AI 助手能力体系
人工智能·ai助手·skills·openclaw·技能系统
oioihoii12 分钟前
AI提效,到底能强到什么程度?
人工智能
AiTop10012 分钟前
美团开源LongCat-AudioDiT:首创波形潜空间建模,刷新音色克隆SOTA
人工智能·ai·aigc
QYR_Jodie14 分钟前
从科研投入与技术迭代驱动到稳增扩容:全球小角度X射线散射仪2025年0.7亿,2032年达0.85亿,2026-2032年CAGR3.0%
大数据·人工智能
Ulyanov16 分钟前
从零构建现代化Python音频播放器:ttk深度应用与皮肤系统设计
python·架构·音视频·数据可视化