描述

集成学习(Ensemble Learning)是一种通过结合多个模型的预测结果来提高整体性能的技术。集成学习的核心思想是通过多个弱学习器的组合,可以构建一个强学习器。

sklearn中常见的集成学习算法:

  • Bagging:通过自助采样法(Bootstrap Sampling)生成多个训练集,然后分别训练多个模型,最后通过投票或平均的方式得到最终结果。
  • Boosting:通过迭代的方式训练多个模型,每个模型都试图纠正前一个模型的错误,最终通过加权投票的方式得到结果。
  • Stacking:通过训练多个不同的模型,然后将这些模型的输出作为新的特征,再训练一个元模型(Meta-Model)来进行最终的预测。

sklearn中的集成学习算法在sklearn.ensemble 中;后面的XGBClassifier算法需要单独安装xgboost库;LGBMClassifier需要安装lightgbm库。

Bagging

Bagging 的目标是通过减少模型的方差来提高性能,适用于高方差、易过拟合的模型。

  • 数据集重采样:对训练数据集进行多次有放回的随机采样,每次采样得到一个子数据集。
  • 训练多个模型:在每个子数据集上训练一个基学习器(通常是相同类型的模型)。
  • 结果合并:将多个基学习器的结果进行合并,通常是通过投票(分类问题)或平均(回归问题)。

最具代表性的算法是:随机森林是 Bagging 的经典实现,它通过构建多个决策树,每棵树在训练时随机选择特征,从而减少过拟合的风险。

优势

  • 可以有效减少方差,提高模型稳定性。
  • 适用于高方差的模型(如决策树)

缺点

  • 训练过程时间较长,需要训练多个模型
  • 结果难以解释

Boosting

Boosting 的目标是通过减少模型的偏差来提高性能,适用于弱学习器。Boosting 的核心思想是逐步调整每个模型的权重,强调那些被前一轮模型错误分类的样本。

  • 序列化训练:模型是一个接一个地训练的,每一轮训练都会根据前一轮的错误进行调整。
  • 加权投票:最终的预测是所有弱学习器预测的加权和,其中错误分类的样本会被赋予更高的权重。
  • 合并模型:每个模型的权重是根据其在训练过程中的表现来确定的。

典型算法:

  • AdaBoost:通过改变样本的权重,使得每个后续分类器更加关注前一轮错误分类的样本。
  • 梯度提升树:GBT 通过迭代优化目标函数,逐步减少偏差。
  • XGBoost:XGBoost 是一种高效的梯度提升算法,广泛应用于数据科学竞赛中,具有较强的性能和优化。
  • LightGBM:是一种基于梯度提升树的框架,相较于 XGBoost,具有更快的训练速度和更低的内存使用。

优势

  • 适用于偏差较大的模型,能有效提高预测准确性。
  • 性能好,在许多实际应用中表现优异。

缺点

  • 对噪声数据比较敏感,容易导致过拟合。

  • 训练过程较慢,特别是在数据量较大的情况下。

Stacking

Stacking 是一种通过训练不同种类的模型并组合它们的预测来提高整体预测准确度的方法。核心思想是:

  • 第一层(基学习器):训练多个不同类型的基学习器(例如,决策树、SVM、KNN 等)来对数据进行预测。
  • 第二层(元学习器):将第一层学习器的预测结果作为输入,训练一个元学习器(通常是逻辑回归、线性回归等),来做最终的预测。

优势

  • 可以使用不同类型的基学习器,捕捉数据中不同的模式。
  • 理论上可以结合多种模型的优势,达到更强的预测能力。

缺点

  • 训练过程复杂,需要对多个模型进行训练,且模型之间的结合方式也需要精心设计。
  • 比其他集成方法如 Bagging 和 Boosting 更复杂,且容易过拟合。

应用样例

StackingClassifier

from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitiris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)# 定义基学习器
estimators = [('dt', DecisionTreeClassifier(max_depth=1)),('svc', SVC(kernel='linear', probability=True))
]
# final_estimator 参数指定元学习器
stacking = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression())
stacking.fit(X_train, y_train)
print(stacking.score(X_train,y_train),stacking.score(X_test,y_test))

XGBClassifier

from xgboost.sklearn import XGBClassifiermodel = XGBClassifier(eval_metric='error',max_depth=1)
model.fit(X_train,y_train)
print(model.score(X_train,y_train),model.score(X_test,y_test))

XGBClassifier常用参数:

  • learning_rate:小的学习率意味着更多的迭代次数,通常能带来更好的结果,但会增加计算时间。
  • max_depth:控制每棵树的深度,避免过拟合。
  • subsample:训练每棵树时使用的样本比例。
  • colsample_bytree:在构建树时对特征进行采样的比例。
  • n_estimators:决策树的个数
  • eval_metric:校验数据所需的评价指标。回归任务默认‘rmse’,分类任务默认‘error’。其他可选值’logloss’、‘auc’
  • gamma:惩罚项系数,指定节点分裂所需的最小损失函数下降值。值越大,算法越保守。
  • alpha:L1 正则化系数,默认为 1。
  • booster:指定弱学习器的类型,默认值为 ‘gbtree’。可以选择 ‘gblinear’ 使用线性模型。

LGBMClassifier

from lightgbm.sklearn  import LGBMClassifiermodel = LGBMClassifier(max_depth=1,boosting_type='gbdt',learning_rate=0.2)
model.fit(X_train,y_train)
print(model.score(X_train,y_train),model.score(X_test,y_test))

LGBMClassifier常用参数:

  • n_estimators:指定弱分类器的数量,默认是100
  • learning_rate:控制每个弱分类器的贡献,默认0.1。一个较小的学习率一般需要更多的树来提高模型性能
  • max_depth:控制每棵树的深度,避免过拟合。
  • boosting_type:提升类型,可以是 gbdt(默认)、dart、goss等,分别对应传统提升树、Dropouts与GOSS。
  • class_weight:用于解决分类不平衡问题,可以设置成balanced或者手动指定每个类别的权重。
  • num_leaves:叶子节点的数量,较高的值能够提高训练的准确度,但也容易导致过拟合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85553.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85553.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85553.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习STC51单片机43(芯片为STC89C52RCRC)智能小车9(语音识别小车)

每日一言 不必与他人比较速度,你走的每一步都在书写自己的传奇。 案例:语音识别小车 这个是最后一个功能了,其实就是用语音功能让小车自己切换各种模式,当然了我们需要先学习一下语音模块 硬件:SU-03T 这个叫做非特定…

Android 中 解析 XML 字符串的几种方式

在 Android 开发中,解析 XML 文件有多种方式,每种方式都有其特点和适用场景。常见的 XML 解析方式有 DOM 解析、SAX 解析 和 XmlPullParser 解析。 1、DOM 解析 DOM(Document Object Model)解析是一种基于树结构的解析方式&#…

云端算力革命:川翔云电脑如何重新定义创作自由

在设计与科技深度融合的时代,高性能硬件的桎梏正成为创意释放的最大障碍。川翔云电脑以云端算力为支点,通过弹性算力、高效存储、多端接入三大核心优势,让顶级 GPU 资源触手可及。 一、核心优势:突破物理极限的云端工作站 弹性算…

1.容器技术与docker环境部署

一:docker概述 因为 Docker 轻便、快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度再变更。每次变更一小部分其实是一种非常安全的方式,在开发环境中…

关于 RSA:RSA 加密算法过程

RSA 是一种非对称加密算法,用“公钥”加密,用“私钥”解密,保证数据传输安全。 比喻理解:锁和钥匙 想象一下: 公钥是“上锁的锁”,别人可以用它锁住箱子(加密),但打不开…

SM3算法C语言实现(无第三方库,带测试)

一、SM3算法介绍 SM3算法是中国国家密码管理局(OSCCA)于2010年发布的商用密码散列函数标准,属于我国自主设计的密码算法体系之一 ,标准文档下载地址为:SM3密码杂凑算法 。SM3算法输出长度为256位(32字节&a…

搜索二叉数(c++)

前言 在学习数据结构的时候我们学习过二叉树,那啥是搜索二叉树呢?我们知道单纯的二叉树没有增删查改的实际意义,因为没有任何限制条件的二叉树其实用处很局限。但是堆就不一样了,他就是一个二叉树加上了大小堆的限制条件&#xf…

vc MFC在opencv的Mat图像上显示中文:Mat转位MFC的CImage,画图写文字,再转回Mat

vc MFC在opencv的Mat图像上显示中文:Mat转位MFC的CImage,画图写文字,再转回Mat // Step 1 创建CImage获取dc int iImgW matImgSized.cols; int iImgH matImgSized.rows; int iChannel matImgSized.channels(); bool bCon matImgSized.is…

Docker环境部署

目录 一:Docker 概述 1.什么是 Docker 2:Docker 的优势 3.Docker 的应用场景 4:Docker 核心概念 二:Docker 安装 1:本安装方式使用阿里的软件仓库 三:Docker 镜像操作 1:获取镜像 2.查看镜像信息 3.查看镜像详细信息 4.修改镜像标签(老名字新名字) 5:删…

Axios 拦截器实现原理深度剖析:构建优雅的请求处理管道

在构建现代前端应用时,网络请求处理是关键环节。作为最流行的HTTP客户端库之一,Axios通过其拦截器机制(Interceptors)提供了强大的请求/响应处理能力。本文将深入Axios源码,揭示拦截器背后的精妙设计与实现原理。 一、…

宝塔安装nginx-http-flv-module,音视频直播,第二篇

1,先安装环境安装nginx 先卸载原有nigix nigix 大于等于 1.2.6 cd /www/server # 进入宝塔目录 yum install git -y git clone https://gitee.com/winshining/nginx-http-flv-module.git 使用源码安装nigix 在 自定义模块 区域点击「添加」,填写以下参…

低延迟4G专网:保障关键业务的实时通信

在工业互联网、智慧园区、应急通信等对“实时性”要求极高的场景中,网络延迟的高低,直接决定了业务运行的可靠性与安全性。IPLOOK依托多年核心网研发经验,推出的低延迟4G专网解决方案,正是为此类关键业务打造的“通信专线”&#…

NLP语言发展路径分享

自然语言处理初期发展历程 早期:离散表示 one-hot(只表达“有/无”,语义完全丢失)→ n-gram(局部上下文,但高维稀疏)→ TF-IDF(考虑词频与权重,但不能表达词关联&#x…

如何将文件从安卓设备传输到电脑?

将文件从 Android 手机传输到 PC 是例行公事吗?想让文件传输更轻松吗?幸运的是,您可以从本文中获得 7 种方法,其中包含详细的步骤,帮助您轻松了解如何将文件从 Android 传输到 PC,涵盖了从无线工具到传统 U…

【经验分享】浅谈京东商品SKU接口的技术实现原理

京东商品 SKU 接口的技术实现原理涉及数据建模、架构设计、接口协议、安全机制及性能优化等多个技术层面。以下从技术角度详细拆解其实现逻辑: 一、SKU 数据模型与存储架构 1. SKU 数据模型设计 核心字段定义: 基础属性:SKU ID、商品名称、…

虚拟机配置node.js(前端环境搭建)

1.在windows下安装node.js(以及npm) 修改npm镜像为阿里云的 npm install --registryhttps://registry.npmmirror.com 2.在Linux下安装node.js(Centos7 只支持16版本之前的) wget https://npmmirror.com/mirrors/node/v15.14.0/n…

多模态大语言模型arxiv论文略读(129)

Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ➡️ 论文标题:Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ➡️ 论文作者:M…

【Redis】Redis 关于 BigKey 的实践规约

目录 一、BigKey 的概念 1.1 普通 key 的设计规则 1.2 BigKey 的定义 1.3 BigKey 存在的问题 二、BigKey 的发现与解决方案 第一种方式:redis-cli --bigkeys 第二种方式:scan扫描 第三种方式:第三方工具 第四种方式:网络…

Golang 与 C/C++ 交互实践

在软件开发的实际场景中,我们常常会遇到需要将不同语言的优势结合起来的情况。Golang 凭借其高效的并发性能和简洁的语法,在网络编程和系统开发领域备受青睐;而 C/C 则以其强大的底层操作能力,在系统资源管理方面具有独特优势。那…

五子棋流量主小程序单模式多模式开源版

功能和特点: 核心游戏功能: 1515 标准棋盘 黑白棋交替落子 自动判断胜负和平局 悔棋功能 计时功能 UI 设计: 木纹风格棋盘 立体感棋子(使用阴影和渐变) 响应式布局,适配不同屏幕尺寸 胜利弹窗动画 交互体验…