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 的训练和调优时间。

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

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

相关文章

04、添加 com.fasterxml.jackson.dataformat -- jackson-dataformat-xml 依赖报错

Correct the classpath of your application so that it contains a single, compatible version of com.fasterxml.jackson.dataformat.xml.XmlMapper 解决: 改用其他版本,我没写版本号,springboot自己默认的是 2.11.4 版本 成功启动项目…

忘记密码-小米机型 其他安卓机型账号锁 设备锁的分析与刷写某第三方解锁包输入“注册码”

重要提示: 博文的主要目的是分析安卓机型账号锁的安全性和解决方法。操作仅限于自己的机型忘记密码 手机号不用过了保修期导致无法通过官方解锁的操作,请勿用于非法途径 在开始前。对于锁的认知可以参考这篇博文 安卓搞机玩机-什么是“锁 ” BL锁 屏幕锁…

Android Gradle 同步优化

作者:究极逮虾户 很多人听到方法论三个字,就觉得我要开始pua,说我阿里味,但是我觉得这个查问题的方式可能会对大家有点帮助。 很多人都会有这样的困扰,给你的一个工作内容是一个你完全陌生的东西,第一选择…

迁移学习:实现快速训练和泛化的新方法

文章目录 迁移学习的原理迁移学习的应用快速训练泛化能力提升 迁移学习的代码示例拓展应用与挑战结论 🎉欢迎来到AIGC人工智能专栏~迁移学习:实现快速训练和泛化的新方法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博…

debug调试时,通过[[FunctionLocation]]找到函数在源代码中的位置

[[FunctionLocation]] 是 JavaScript 引擎内部的一个属性,用于记录函数在代码中的位置。它不是 JavaScript 语法的一部分,而是在调试和开发过程中用于追踪函数定义位置的一个辅助属性。 当我们在浏览器的开发者工具或其他调试工具中查看函数的属性时&am…

微信短链跳转到小程序指定页面调试

首先说下背景:后端给了短链地址,但是无法跳转到指定页面。总是在小程序首页。指定的页面我们是h5页面。排查步骤如下: 1、通过快速URL Scheme 编译。上部普通编译 下拉找到此选项。 、 2、按照小程序的要求的URL Scheme输入。另外后端给的…

SQL-DQL

-----分组查询----- 1.语法: SELECT 字段列表 FROM 表名 [WHERE 条件 ] GROUP BY 分组字段名 [HAVING 分组后过滤条件]; 2.where与having区别 》执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组&…

微信小程序 校园周边美食商城分享系统

管理员、会员、商家可通过Android系统手机打开系统,注册登录后可进行管理员后端;首页、个人中心、会员管理、商家管理、美食类型管理、美食信息管理、美食交流、我的收藏管理、系统管理、订单管理,会员前端;首页、美食信息、美食交…

C++快速回顾(三)

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。C/C是音视频必…

keras深度学习框架通过简单神经网络实现手写数字识别

背景 keras深度学习框架,并不是一个独立的深度学习框架,它后台依赖tensorflow或者theano。大部分开发者应该使用的是tensorflow。keras可以很方便的像搭积木一样根据模型搭出我们需要的神经网络,然后进行编译,训练,测试…

基于RabbitMQ的模拟消息队列之四——内存管理

文章目录 一、设计数据结构二、管理集合1.交换机2.队列3.绑定4.消息5.队列上的消息6.待确认消息7.恢复数据 一、设计数据结构 针对交换机、队列、绑定、消息、待确认消息设计数据结构。 交换机集合 exchangeMap 数据结构:ConcurrentHashMap key:交换机name value:交…

rpm打包

文章目录 rpm打包 1. rpm打包步骤0)安装打包工具rpm-build和rpmdevtools1)创建初始化目录2)准备打包内容3)编写打包脚本 spec文件 rpm打包 1. rpm打包步骤 0)安装打包工具rpm-build和rpmdevtools yum install rpm-bu…

C++信息学奥赛1176:谁考了第k名

#include <iostream> #include <string> using namespace std; int main() {int n, a;cin >> n >> a; // 输入整数 n 和 aint arr[n]; // 创建大小为 n 的整型数组 arrdouble btt[n]; // 创建大小为 n 的双精度浮点型数组 bttfor (int i 0; i < n;…

03-基础例程3

基础例程3 01、外部中断 ESP32的外部中断有上升沿、下降沿、低电平、高电平触发模式。 实验目的 使用外部中断功能实现按键控制LED的亮灭 按键按下为0。【即下降沿】 * 接线说明&#xff1a;按键模块-->ESP32 IO* (K1-K4)-->(14,27,26,25)* * …

2023年天府杯——C 题:码头停靠问题

问题背景&#xff1a; 某个港口有多个不同类型的码头&#xff0c;可以停靠不同种类的船只。每 艘船只需要一定的时间来完成装卸货物等任务&#xff0c;并且每个码头有容量 限制和停靠时间限制。港口需要在保证收益的情况下&#xff0c;尽可能地提高 运营效率和降低成本。同…

【中危】Spring Kafka 反序列化漏洞 (CVE-2023-34040)

zhi.oscs1024.com​​​​​ 漏洞类型反序列化发现时间2023-08-24漏洞等级中危MPS编号MPS-fed8-ocuvCVE编号CVE-2023-34040漏洞影响广度小 漏洞危害 OSCS 描述Spring Kafka 是 Spring Framework 生态系统中的一个模块&#xff0c;用于简化在 Spring 应用程序中集成 Apache Kaf…

新型安卓恶意软件使用Protobuf协议窃取用户数据

近日有研究人员发现&#xff0c;MMRat新型安卓银行恶意软件利用protobuf 数据序列化这种罕见的通信方法入侵设备窃取数据。 趋势科技最早是在2023年6月底首次发现了MMRat&#xff0c;它主要针对东南亚用户&#xff0c;在VirusTotal等反病毒扫描服务中一直未被发现。 虽然研究…

零知识证明(zk-SNARK)(一)

全称为 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge&#xff0c;简洁非交互式零知识证明&#xff0c;简洁性使得运行该协议时&#xff0c;即便statement非常大&#xff0c;它的proof大小也仅有几百个bytes&#xff0c;并且验证一个proof的时间可以达到毫秒…

ExpressLRS开源之RC链路性能测试

ExpressLRS开源之RC链路性能测试 1. 源由2. 分析3. 测试方案4. 测试设计4.1 校准测试4.2 实验室测试4.3 拉距测试4.4 遮挡测试 5. 总结6. 参考资料 1. 源由 基于ExpressLRS开源基本调试验证方法&#xff0c;对RC链路性能进行简单的性能测试。 修改设计总能够满足合理的需求&a…

达梦数据库管理用户和创建用户介绍

概述 本文主要对达梦数据库管理用户和创建用户进行介绍和总结。 1.管理用户介绍 1.1 达梦安全机制 任何数据库设计和使用都需要考虑安全机制&#xff0c;达梦数据库采用“三权分立”或“四权分立”的安全机制&#xff0c;将系统中所有的权限按照类型进行划分&#xff0c;为每…