【机器学习】集成学习——提升模型准确度的秘密武器

【机器学习】集成学习——提升模型准确度的秘密武器

1. 引言

集成学习(Ensemble Learning)是一种通过结合多个弱模型来提升整体预测准确性的技术。通过将多个模型的预测结果进行组合,集成学习在复杂任务中展现了极强的泛化能力。本文将探讨集成学习的主要方法,并通过代码示例演示如何应用这些方法来提升模型表现。

在这里插入图片描述

2. 什么是集成学习?

集成学习的核心思想是将多个模型(弱学习器)组合成一个更强大的模型。常见的集成学习方法包括:

  • Bagging(袋装法)
  • Boosting(提升法)
  • Stacking(堆叠法)

这些方法通过不同的策略组合模型,降低单个模型的误差,提高准确性和鲁棒性。

3. Bagging(袋装法)

3.1 Bagging 的原理

Bagging 通过对数据集进行多次有放回采样,训练多个模型,并将这些模型的预测结果进行平均或投票。它可以有效减少过拟合,特别适用于高方差模型,如决策树。

在这里插入图片描述

3.2 随机森林(Random Forest)

随机森林是 Bagging 的一种典型实现,它通过构建多个决策树,并结合它们的结果来进行预测。

python复制代码from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# 加载数据
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)

# 创建随机森林模型
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)

# 预测与评估
y_pred = rf_model.predict(X_test)
print(f"随机森林准确率: {accuracy_score(y_test, y_pred)}")

4. Boosting(提升法)

4.1 Boosting 的原理

Boosting 的核心思想是通过迭代地训练多个弱学习器,每次调整上一次模型中错误分类的样本权重,从而提升模型的整体性能。与 Bagging 不同,Boosting 强调模型之间的顺序性。

4.2 梯度提升决策树(Gradient Boosting)

梯度提升决策树(GBDT)是一种流行的 Boosting 方法,适用于回归和分类任务。它通过最小化损失函数来优化模型。

python复制代码from sklearn.ensemble import GradientBoostingClassifier

# 创建梯度提升模型
gb_model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
gb_model.fit(X_train, y_train)

# 预测与评估
y_pred = gb_model.predict(X_test)
print(f"梯度提升准确率: {accuracy_score(y_test, y_pred)}")

在这里插入图片描述

4.3 XGBoost

XGBoost 是一种优化版的梯度提升算法,具有更快的计算速度和更高的预测精度。

python复制代码import xgboost as xgb
from sklearn.metrics import accuracy_score

# 转换数据格式为 DMatrix
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# 设置模型参数
params = {'objective': 'multi:softmax', 'num_class': 3, 'max_depth': 3, 'learning_rate': 0.1}
num_round = 100

# 训练模型
xgb_model = xgb.train(params, dtrain, num_round)

# 预测与评估
y_pred = xgb_model.predict(dtest)
print(f"XGBoost 准确率: {accuracy_score(y_test, y_pred)}")

5. Stacking(堆叠法)

5.1 Stacking 的原理

Stacking 通过将多个不同的模型组合在一起,通常会使用一个**元学习器(Meta-Learner)**来整合各个基础模型的预测结果。与 Bagging 和 Boosting 不同,Stacking 不要求模型类型相同,因此可以通过组合不同类型的模型(如决策树、逻辑回归、支持向量机等)来增强表现。

5.2 Stacking 示例

下面是使用 Stacking 的示例,通过将决策树、逻辑回归和支持向量机的预测结果结合在一起进行最终预测。

python复制代码from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier

# 创建基础模型
estimators = [
    ('dt', DecisionTreeClassifier()),
    ('svc', SVC(probability=True))
]

# 创建堆叠模型,使用逻辑回归作为元学习器
stacking_model = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression())
stacking_model.fit(X_train, y_train)

# 预测与评估
y_pred = stacking_model.predict(X_test)
print(f"Stacking 准确率: {accuracy_score(y_test, y_pred)}")

在这里插入图片描述

6. 集成学习的优势

集成学习相比单一模型有以下几个优势:

  • 降低方差:通过结合多个模型,集成学习可以减少单一模型的方差,提升泛化能力。
  • 提高准确性:集成学习往往比单一模型具有更高的预测准确率。
  • 增强鲁棒性:集成模型对异常数据点的敏感性较低,更加稳健。

7. 集成学习的挑战

尽管集成学习有诸多优势,但它也有一些挑战:

  • 计算开销:集成学习涉及多个模型的训练,计算资源消耗较大。
  • 模型复杂性:集成学习的模型更加复杂,难以解释和调试。

在这里插入图片描述

8. 总结

集成学习是一种强大的技术,通过结合多个弱模型来提升整体预测准确性。本文介绍了三种常见的集成学习方法:Bagging、Boosting 和 Stacking,并通过代码示例展示了如何应用这些方法。在实际项目中,集成学习能有效提高模型的性能,特别是在数据复杂、模型表现有限的情况下。

9. 参考资料

  • XGBoost 官方文档

使用机器学习技术分析CSDN热榜

在这里插入图片描述

  • 机器学习上热榜太难了,最难的部分在于要找机器学习的图片,然后变成博客封面。建议CSDN减少对机器学习上热榜难度,只要标题是机器学习,不需要内容也能上热榜。
    img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:
  • 📊 一图读懂系列

  • 📝 一文读懂系列

  • ⚽ Uniapp

  • 🌟 持续更新

  • 🤩 Vue项目实战

  • 🚀 JavaWeb

  • 🎨 设计模式

  • 📡 计算机网络

  • 🎯 人生经验

  • 🔍 软件测试

掘金账号 CSDN账号

感谢订阅专栏 三连文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/886351.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis篇(面试题 - 连环16炮)(持续更新迭代)

目录 (第一炮)一、Redis?常用数据结构? 1. 项目里面到了Redis,为什么选用Redis? 2. Redis 是什么? 3. Redis和关系型数据库的本质区别有哪些? 4. Redis 的线程模型了解吗&#x…

C++ -引用-详解

博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ C -引用-详解 1.引用基础1.1是什么1.2特点 2.引用的意义3.引用的应用场景3.1作为参数3.2作为返回值传值返回引用返回 4.权限问题5.与指针的区别6.总结 1.引用基础 1.1是什么 …

计算机网络期末复习真题(附真题答案)

前言: 本文是笔者在大三学习计网时整理的笔记,哈理工的期末试题范围基本就在此范畴内,就算真题有所更改,也仅为很基础的更改数值,大多跑不出这些题,本文包含简答和计算等大题,简答的内容也可能…

话术挂断之后是否处理事件

文章目录 前言联系我们解决方案方案一方案二 前言 流程:自动外呼进入机器人话术。问题:在机器人放音时用户挂断后,话术还会继续匹配流程,如果匹配上的是放音节点,还会进行放音,那么在数据库表conversation…

stm32四足机器人(标准库)

项目技术要求 PWM波形的学习 参考文章stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)_ttl pwm 驱动激光头区别-CSDN博客 舵机的学习 参考文章 stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)…

Stream流的初步认识,Stream流的思想和获取Stream流

一.Stream流的作用 package com.njau.my_stream;import java.util.ArrayList;/*** 目标:认识Stream流* 案例:将以“张”开头的人名筛选出来到一个新的集合中去,再将其中三个字的名字的筛选出来到新集合中去*/ public class StreamDemo1 {pub…

畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)

畅阅读系统小程序 目录 基于java的畅阅读系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…

【FPGA开发】Xilinx FPGA差分输入时钟的使用方法

正文 以前在使用ZYNQ的领航者ZYNQ7020进行FPGA学习时,它们使用的单端50M的输入时钟,在verlog代码编写上比较简单,而现在使用Alinx的AXU3EG开发板时,发现它使用的是200M的差分输入时钟,哪这个时候,输入时钟要…

【IEEE PDF eXpress】格式不对

目录 一、问题二、解决方法 一、问题 word的文档,用IEEE PDF eXpress网站生成pdf后,提交论文出现错误: Document validation failed due to the following errors: Content exceeds IEEE template margins for its format (Page 1:Bottom).…

Microsoft Edge 五个好用的插件

🐣个人主页 可惜已不在 🐤这篇在这个专栏 插件_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 Microsoft Edge 一.安装游览器 ​编辑 二.找到插件商店 1.打开游览器后,点击右上角的设置&#…

课设实验-数据结构-单链表-文教文化用品品牌

题目&#xff1a; 代码&#xff1a; 正解&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #define MaxSize 10 //定义顺序表最大长度static int result; //字符串比较结果 static int i; //循环初始值 static bool flag; //记录结…

单目3d重建DUSt3R 笔记

目录 DUSt3R 三维重建 报错RecursionError: maximum recursion depth exceeded in comparison 报错 numpy.core.multiarray failed to import 报错Numpy is not available 解决 升级版mast3r 速度变慢 修改了参数设置脚本&#xff1a; 测试效果 操作技巧 DUSt3R 三维重…

Docker仓库搭建

目录 一、Docker Hub 二、私有Registry仓库搭建 1、下载并开启仓库镜像registry 2、Registry加密传输 3、建立一个registry仓库 4、为客户端建立证书 5、测试 6、为仓库建立登录认证 三、Harbor仓库搭建 Docker 仓库&#xff08;Docker Registry&#xff09; 是用于存…

V3D——从单一图像生成 3D 物体

导言 论文地址&#xff1a;https://arxiv.org/abs/2403.06738 源码地址&#xff1a;https://github.com/heheyas/V3D.git 人工智能的最新进展使得自动生成 3D 内容的技术成为可能。虽然这一领域取得了重大进展&#xff0c;但目前的方法仍面临一些挑战。有些方法速度较慢&…

Part_one C/C++语言数据类型、运算符与表达式

1.0 编写第一个C程序 1.打开Visual Studio点击"创建新项目" 2.点击"空项目"&#xff0c;并点击"下一步" 3.设置"项目名称"并"设置地址" 4.打开项目后&#xff0c;右击"源文件"并选择"添加"的"新建…

基于yolov8深度学习的120种犬类检测与识别系统python源码+onnx模型+评估指标曲线+精美GUI界面目标检测狗类检测犬类识别系统

【算法介绍】 基于YOLOv8深度学习的120种犬类检测与识别系统是一款功能强大的工具&#xff0c;该系统利用YOLOv8深度学习框架&#xff0c;通过21583张图片的训练&#xff0c;实现了对120种犬类的精准检测与识别。 该系统基于Python与PyQt5开发&#xff0c;具有简洁的UI界面&a…

程计软考题2-编译、解释程序翻译阶段

(一) 编译器和解释器的工作阶段 1.编译和解释与源程序的区别 分析&#xff1a;编译和解释是语言处理的两种基本方式。 编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段&#xff0c;以及符号表管理和出错处理模块。 解释过程在词法、语…

数字经济与新质生产力:地理信息与遥感视角下的深度分析

在数字化浪潮的推动下&#xff0c;我们正见证着生产力的一次历史性飞跃。数字经济如何重塑生产力的三大要素&#xff1a;劳动对象、劳动资料和劳动者&#xff1f;让我们来深度分析数字经济如何推动新质生产力的发展。 一、数字经济与地理信息的融合 地理信息与遥感技术是数字…

【数据结构】什么是红黑树(Red Black Tree)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;红黑树的概念 &#x1f4cc;红黑树的操作 &#x1f38f;红黑树的插入操作 &#x1f38f;红黑树的删除操作 结语 &#x1f4cc;红黑树的概念 我们之前学过了…

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…