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

相关推荐
Faker66363aaa2 小时前
YOLO11改进蚊虫目标检测模型,AttheHead注意力机制提升检测精度
人工智能·目标检测·计算机视觉
郝学胜-神的一滴2 小时前
基于30年教学沉淀的清华大学AI通识经典:《人工智能的底层逻辑》
人工智能·程序人生·机器学习·scikit-learn·sklearn
OPEN-Source2 小时前
大模型实战:把 LangChain / LlamaIndex 工作流接入监控与告警体系
人工智能·langchain·企业微信·rag
青春不朽5122 小时前
Scikit-learn 入门指南
python·机器学习·scikit-learn
得物技术2 小时前
大模型网关:大模型时代的智能交通枢纽|得物技术
人工智能·ai
共享家95272 小时前
嵌入模型(Embedding)的全方位指南
人工智能·机器学习
进击的小头2 小时前
FIR滤波器实战:音频信号降噪
c语言·python·算法·音视频
ViiTor_AI2 小时前
AI 有声书旁白来了:AI 配音如何重塑有声书制作模式
人工智能
2501_941652772 小时前
验证码识别与分类任务_gfl_x101-32x4d_fpn_ms-2x_coco模型训练与优化
人工智能·数据挖掘