XGBoost,NVIDIA是什么

目录

XGBoost

算法层面

什么是 XGBoost

GBDT是什么

GBDT中的GB

为何选择 XGBoost?

XGBoost 的优势和属性

XGBoost 和数据科学家

为何 XGBoost 在 GPU 上表现更出色

XGBoost + RAPIDS

GPU 加速的 XGBoost

NVIDIA是什么

使用 Spark + XGBoost 的 GPU 加速端到端数据流程


XGBoost

XGBoost 是一个开源软件库,在梯度提升框架下执行优化的分布式梯度提升机器学习算法。

该算法在GBDT的基础之上,在算法层面和系统设计层面都做了一些创新性的改进,可以把XGBoost看作是GBDT更好更快的实现

算法层面

(1)在GBDT目标函数的基础上,在对优化目标求解的时候使用了二阶导数的信息,因此会使优化目标的定义更加精确,训练速度会更快;此外,XGBoost在优化目标函数中加入了正则项,这会限制模型的复杂度,防止过拟合的发生。

(2)提出了一种处理缺失值的算法,XGBoost能够自动对缺失值进行处理

(3)在树生成选择特征划分节点的时候,通过加权分位数草图算法,预先对每个特征建立候选的划分节点,不在使用原先的贪婪算法(遍历每个特征所有取值),从而大大加快训练速度

系统设计层面

(1)对训练的每个特征排序并且以块(block)的结构存储在内存中,方便后续训练迭代重复使用,减少计算量。对于不同的特征的特征划分点,XGBoost分别在不同的线程中并行选择分裂的最大增益,从而实现了并行训练。

(2)提出了一种有效的缓存感知块结构用于树模型的核外学习

下面我们将分别对上述5项进行分析。

什么是 XGBoost?

即极端梯度提升,是可扩展的分布式梯度提升决策树 (GBDT) 机器学习库。XGBoost 提供并行树提升功能,是用于回归、分类和排名问题的先进机器学习库。

首先掌握 XGBoost 所构建的机器学习概念和算法(监督机器学习、决策树、集成学习和梯度提升)对理解 XGBoost 至关重要。

监督式机器学习使用算法来训练模型,利用标签和特征在数据集中查找模式,然后使用经过训练的模型预测新数据集特征上的标签。

利用标签在数据集中查找模式。

决策树可创建一个模型,该模型通过评估 If-Then-Else True/False 特征问题树来预测标签,并估算做出正确决策的概率所需的最少问题数量。

决策树可用于利用分类来预测类别,或利用回归来预测连续数值。在以下简单示例中,决策树用于根据卧室的大小和数量(特征)来估算房价(标签)。

决策树。

GBDT是什么

GBDT是Gradient Boosting Decision Tree的简写,中文为梯度提升决策树,是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。

GBDT中的GB

GB代表的是Gradient Boosting,意为梯度提升,梯度是一种数学概念,一个函数的梯度方向是函数上升最快的方向,相反的,负梯度方向是函数下降最快的方向。

梯度提升决策树 (GBDT) 是一种类似于随机森林的决策树集成学习算法,用于分类和回归。

集成学习算法结合了多种机器学习算法,可获得更出色的模型。

随机森林和 GBDT 都构建了由多个决策树组成的模型。不同之处在于树的构建和组合方式。

随机森林和 GBDT 都构建了由多个决策树组成的模型。

随机森林使用一种名为 Bagging 的技术,通过数据集的随机自助抽样样本并行构建完整的决策树。最终得到的预测结果是所有决策树预测结果的平均值

术语“梯度提升”源自“提升”或改进单个弱模型的理念,通过将单个弱模型与大量其他弱模型相结合,生成统一的强大模型。梯度提升是提升的扩展,其中附加生成弱模型的过程被正式确定为目标函数上的梯度下降算法。梯度提升为下一个模型设定了目标结果,以尽可能减少错误。每个案例的目标结果都基于与预测相关的误差梯度(因此称为梯度提升)。

GBDT 以迭代方式训练一组浅层决策树,每次迭代都使用上一个模型的残差拟合下一个模型。最终预测是所有树预测的加权和。

随机森林“Bagging”可大幅减少差异和过拟合,

GBDT“Boosting”则可减少偏差和欠拟合。

XGBoost 是一种可扩展且高度准确的梯度提升实现,它突破了提升树算法的计算能力极限,主要用于提升机器学习模型性能,提高计算速度。使用 XGBoost 时,树是并行构建的,而不是像 GBDT 那样按顺序构建。XGBoost 遵循 level-wise 策略,扫描梯度值并使用这些部分和来评估训练集中每个可分割点的分割质量。

为何选择 XGBoost?

由于帮助个人和团队赢得了几乎所有 Kaggle 结构化数据竞赛,XGBoost 在过去几年中获得了极大的青睐。在这些竞赛中,公司和研究人员发布数据,之后统计师和数据挖掘者竞争生成预测和描述数据的优质模型。

最初构建了 XGBoost 的 Python 和 R 的执行。由于 XGBoost 的流行,如今 XGBoost 已经实现了为 Java、Scala、Julia、Perl 和其他语言提供包。这些执行向更多的开发者开放了 XGBoost 库,并提高了它在 Kaggle 社区中的吸引力。

XGBoost 的优势和属性

XGBoost 的优势和属性列表非常丰富,包括以下内容:

  • 全球积极为 XGBoost 开源开发做出贡献的数据科学家数量庞大,且正在不断增长
  • 在广泛的应用中使用,包括解决回归、分类、排名和用户定义的预测挑战中的问题
  • 一个高度可移植的库,目前在 OS X、Windows 和 Linux 平台上运行
  • 支持 AWS、Azure、Yarn 集群和其他生态系统的云集成
  • 在各个垂直市场领域的多个组织中积极生产使用
  • 一个专为高效、灵活和可便携而构建的库

XGBoost 和数据科学家

对于数据科学家来说,值得注意的是,与其他算法相比,XGBoost 和 XGBoost 机器学习模型在预测性能和处理时间方面具有出色的组合。各种基准研究都证实了这一点,并进一步解释了它对数据科学家的吸引力。

为何 XGBoost 在 GPU 上表现更出色

使用 XGBoost 处理由 CPU 提供动力的机器学习任务实际上可能需要数小时才能运行。这是因为创建高度准确的一级预测结果需要创建数千个决策树,并测试大量参数组合。

图形处理器或 GPU 配备由数千个小型高效核心组成的大规模并行架构,可以同时启动数千个并行线程,能够强力支持计算密集型任务。

CPU 与 GPU 的对比。

NVIDIA 开发了 RAPIDS™,这是一个开源的数据分析和机器学习加速平台,或完全在 GPU 中执行端到端数据科学训练流程。它依赖于 NVIDIA CUDA® 基元进行低级别计算优化,但通过用户友好型 Python 界面实现 GPU 并行结构和高内存带宽。

RAPIDS 专注于分析和数据科学的常见数据准备任务,提供了一个熟悉的 DataFrame API,与 scikit-learn 和各种机器学习算法集成,无需支付典型的序列化成本。这可加速端到端流程(从数据准备到机器学习,再到深度学习)。RAPIDS 还包括对多节点、多 GPU 部署的支持,大大加快了对更大规模数据集的处理和训练。

机器学习和深度学习,尽在 GPU。

XGBoost + RAPIDS

RAPIDS 团队与 Distributed Machine Learning Common (DMLC) XGBoost 组织密切合作,而且 XGBoost 现已包含无缝嵌入式 GPU 加速。这显著提升了模型训练的速度,并提高了预测的准确性。

XGBoost 现基于 GoAI 接口标准而构建,从 cuDF、cuPY、Numba、PyTorch 等提供零拷贝数据导入。Dask API 可轻松扩展到多个节点或多个 GPU,并且 RAPIDS 内存管理器 (RMM) 与 XGBoost 集成,因此您可以共享单个高速内存池。

GPU 加速的 XGBoost

GPU 加速的 XGBoost 算法利用并行前缀快速求和运算来扫描所有可能的分割,并通过并行基数排序对数据进行重新分区。此算法为给定的提升迭代构建决策树,一次生成一层,并在 GPU 上同时处理整个数据集。

NVIDIA是什么

NVIDIA是GPU(图形处理器)的发明者,也是人工智能计算的引领者。我们创建了世界上最大的游戏平台和世界上最快的超级计算机。我们是自动驾驶汽车,智能机器和物联网的大脑。

使用 Spark + XGBoost 的 GPU 加速端到端数据流程

NVIDIA 深知,大规模机器学习可为数据科学家和开发者以及最终用户提供强大的预测能力。但这种大规模学习取决于克服本地和云基础设施面临的关键难题,例如加速海量数据的预处理,然后加速计算密集型模型训练。

NVIDIA 首次发布的 Spark-XGBoost 支持跨 Apache Spark 节点的 XGBoost 机器学习模型的训练和推理。这有助于使其成为企业级分布式机器学习的先进机制

GPU 加速的 Spark XGBoost 提高了海量数据的预处理速度,允许在 GPU 显存内实现更大的数据量,并缩短了 XGBoost 的训练和调优时间。

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

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

相关文章

晨控CK-GW208与三菱L系列PLC以TCP通讯手册

晨控CK-GW208是一款支持标准工业以太网协议的IO-LINK主站网关,方便用户快速便捷的集成到 PLC 等控制系统中。 CK-GW208主站网关集成 8 路 IO-LINK 通信端口,采用即插即用模式,无需繁琐的配置,减轻现场安装调试的工作量。为了满足…

如何撰写具有传播力的品牌软文?

企业为了能将自己的品牌宣传推广出去,不论是在品牌初创还是成熟阶段都会撰写很多的新闻软文稿件发布在各大媒体平台上,为的就是能起到持续宣传和影响的效果! 软文不但要求短小精悍,更注重内容的精准。不管是什么类型的文章&#…

android - fragment 数据丢失?状态丢失?

最佳答案 一些状态丢失的例子: 1. 假设您有一个按钮和一个 TextView 。在代码中,你已经定义了初始值为 0 的整数 i,它通过单击按钮递增 1,并且它的值显示在 TextView 中。假设你已经按下按钮 5 次,那么 textview 将被设置为 0。也…

数据库选型<1>

数据库选型 1.SQL与NoSQL1.SQL2.NoSQL 2.各种数据存储的适应场景1.MySQL 3.构建MySQL开发环境 1.SQL与NoSQL 1.SQL 关系型数据库 MySQLOracleSQL serverPostGreSQL 关系型数据库的特点 数据结构化存储在二维表中(新增JSON存储方式,也有nosql的特点)支持事务的原子…

从按下电源键到进入系统,CPU在干什么?

本专栏更新速度较慢,简单讲讲计算机的那些事,简单讲讲那些特别散乱杂的知识,欢迎各位朋友订阅专栏 非常感谢一路相伴的大佬们 浅淡计算机系列第2篇 目录 通电 保护模式和实模式 内存管理单元MMU 逻辑地址?物理地址&#xff1…

MyBatis:使用注解让数据库操作更简单

目录 一、简介 二、配置 三、基于注解的基本使用 四、测试 总结 一、简介 在Java开发中,数据库操作是一个常见而重要的任务。为了方便地执行SQL语句,获取结果集,处理异常等,我们通常需要使用JDBC(Java Database …

【SA8295P 源码分析】25 - QNX Ethernet MAC 驱动 之 emac_isr_thread_handler 中断处理函数源码分析

【SA8295P 源码分析】25 - QNX Ethernet MAC 驱动 之 emac_isr_thread_handler 中断处理函数源码分析 一、emac 中断上半部:emac_isr()二、emac 中断下半部:emac_isr_thread_handler()2.1 emac 中断下半部:emac_isr_sw()系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章…

POSTGRESQL 如何用系统函数来诊断权限问题

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

酷炫JavaScript 技巧

1.检查元素是否在屏幕可见区域内 我们如何获得元素的点击率? 主要取决于用户点击元素的次数和元素在页面上显示的次数。 我们可以很容易地获取到用户的点击次数,但是如何获取一个元素的显示次数呢? 我们可以通过IntersectionObserver轻松…

2023MySQL+MyBatis知识点整理

文章目录 主键 外键 的区别?什么是范式?什么是反范式?什么是事务?MySQL事务隔离级别?MySQL事务默认提交模式?MySQL中int(1)和int(10)的区别MySQL 浮点数会丢失精度吗?MySQL支持哪几种时间类型&a…

docker 命令

一、docker命令 1、镜像保存 docker save imageid -o modelzoozl.tar #把镜像保存到本地 docker load -i dockername #把tar包load下来,load成镜像 docker export CONTAINERID/CONTAINERNAME -o modelzoozl.tar #把启动着的镜像导出 docker import modelzo…

excel处理公式获得最终值--------------gxl

/*** 读取单元格内容 包括计算公式的结果,引用公式的结果* param cell* return*/public static String getCellValue(Cell cell){System.out.println(cell);String value null;if(cell ! null){System.out.println(cell.getCellType());switch (cell.getCellType()…

【JavaWeb】会话管理

HTTP的基本性质 HTTP是简单的HTTP是可扩展的:HTTP headers让协议的扩展变得容易HTTP是无状态的,有会话的:这意味着服务器不能记住之前的请求或连接状态。每个HTTP请求都是独立的,服务器无法识别该请求是否来自同一个客户端或与之前…

springcloud3 GateWay章节-Nacos+gateway动态路由负载均衡4

一 工程结构 1.1 工程 1.2 搭建gatewayapi工程 1.pom文件 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--gateway--&g…

java中写入excel类HSSFWorkbook和XSSFWorkbook和SXSSFWorkbook的区别?

在Java中&#xff0c;HSSFWorkbook、XSSFWorkbook和SXSSFWorkbook都是Apache POI库中用于处理Excel文件的类。它们之间的主要区别如下&#xff1a; HSSFWorkbook&#xff1a;它是POI库中处理旧版Excel&#xff08;.xls&#xff09;文件的类。HSSFWorkbook基于OLE2 Compound Doc…

复习之web服务器--apache

PS&#xff1a;Vim复制小技巧 一、实验环境 两台虚拟机 (nodea,nodeb)配置ip搭建软件仓库关闭selinux [rootftp Desktop]# hostnamectl set-hostname nodea.westos.org [rootftp Desktop]# hostname nodea.westos.org [rootftp Desktop]# ifconfig enp1s0: flags4163<UP,B…

大数据开发要学习什么?学完又能做什么

学习大数据需要掌握什么语言基础&#xff1f; 1、Java基础 大数据框架90%以上都是使用Java开发语言&#xff0c;所以如果要学习大数据技术&#xff0c;首先要掌握Java基础语法以及JavaEE方向的相关知识。 2、MySQL数据库 这是学习大数据必须掌握的知识之一。数据的操作语言是…

Vue2向Vue3过度核心技术组件通信

目录 1 组件基础知识scoped解决样式冲突1.1 默认情况&#xff1a;1.2 代码演示1.3 scoped原理1.4 总结 2 组件基础知识data必须是一个函数2.1 data为什么要写成函数2.2 代码演示2.3 总结 3 组件通信3.1 什么是组件通信&#xff1f;3.2 组件之间如何通信3.3 组件关系分类3.4 通信…

为什么使用Nacos而不是Eureka(Nacos和Eureka的区别)

文章目录 前言一、Eureka是什么&#xff1f;二、Nacos是什么&#xff1f;三、Nacos和Eureka的区别3.1 支持的CAP3.2连接方式3.3 服务异常剔除3.4 操作实例方式 总结 前言 为什么如今微服务注册中心用Nacos相对比用Eureka的多了&#xff1f;本文章将介绍他们之间的区别和优缺点…

【element-ui】el-dialog改变宽度

dialog默认宽度为父元素的50%&#xff0c;这就导致在移动端会非常的窄&#xff0c;如图1&#xff0c;需要限定宽度。 解决方法&#xff1a;添加custom-class属性&#xff0c;然后在style中编写样式&#xff0c;注意&#xff0c;如果有scoped限定&#xff0c;需要加::v-deep &l…