Xgboost优点

2024-06-22 21:58
文章标签 优点 xgboost

本文主要是介绍Xgboost优点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文转自:

点击打开链接

Gradient boosting Decision Tree(GBDT)

  GB算法中最典型的基学习器是决策树,尤其是CART,正如名字的含义,GBDT是GB和DT的结合。要注意的是这里的决策树是回归树,GBDT中的决策树是个弱模型,深度较小一般不会超过5,叶子节点的数量也不会超过10。

Xgboost

  Xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)。下面所有的内容来自原始paper,包括公式。

(1). xgboost在目标函数中显示的加上了正则化项,基学习为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。

(2). GB中使用Loss Function对f(x)的一阶导数计算出伪残差用于学习生成fm(x),xgboost不仅使用到了一阶导数,还使用二阶导数

(3). 上面提到CART回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关

xgboost算法的步骤和GB基本相同,都是首先初始化为一个常数,gb是根据一阶导数ri,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。

xgboost与gdbt除了上述三点的不同,xgboost在实现时还做了许多优化:

  • 在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点
  • xgboost考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper提到50倍。
  • 特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在处理每个特征列时可以做到并行。
  • 按照特征列方式存储能优化寻找最佳的分割点,但是当以行计算梯度数据时会导致内存的不连续访问,严重时会导致cache miss,降低算法效率。paper中提到,可先将数据收集到线程内部的buffer,然后再计算,提高算法的效率。
  • xgboost 还考虑了当数据量比较大,内存不够时怎么有效的使用磁盘,主要是结合多线程、数据压缩、分片的方法,尽可能的提高算法的效率。

这篇关于Xgboost优点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085523

相关文章

Struts 的优点

Struts是一个用来快速开发MVC应用程序的MVC框架,它使用一个过滤器调度程序作为控制器。在编写一个MVC应用程序时,程序员的工作包括提供一个控制器和编写各种必要的动作类。控制器必须能够完成下面5项任务。 (1)根据URI字符串确定应该调用哪个动作。 (2)对相关的动作类进行实例化。 (3)如果动作对象存在,就用请求参数填充该动作的属性。 (4)如果动作对象存在,就调用相应的动作方法。

【Rust投稿】Rust语言优点对比C/C++

初接触到Rust这门语言,主要是看中了它的性能和语法。一开始主要是在力扣平台刷题学习,然后每个语言都会试一试,发现Rust速度甚至在某些地方超过了C/C++,我就对这门语言比较感兴趣。 接下来说说我对这门语言优点的看法: 一、多范式 Rust是一门多范式的语言,能够很好地支持函数式和面向对象。其独特的函数声明方式 fn 函数名(参数列表) -> 返回类型 这种简捷的声明方式就能够让人一眼看出这是

SpringCloud中Eureka和Nacos的区别和各自的优点

Eureka注册中心 Eureka作为一个注册中心,服务提供者把服务注册到注册中心,服务消费者去注册中心拉取信息, 然后通过负载均衡得到对应的服务器去访问。 服务提供者每隔30s向注册中心发送请求,报告自己的状态,当超过一定时间没有发送时,注册中心会认为该服务宕机,会把它剔除。 创建Eureka服务 需要自己手动编写这个程序和导入依赖 server:port: 10086 #端口

智慧校园综合管理系统的优点有哪些

在当今这个信息化飞速发展的时代,智慧校园综合管理系统正逐步成为教育领域的一股革新力量,它悄然改变着我们对传统校园管理的认知。这套系统如同一个无形的桥梁,将先进的信息技术与学校的日常运作紧密相连,展现出多维度的优势。 它首先体现在对校园资源的精细管理和高效调配上。无论是教学楼的使用安排,还是图书资料的借阅流通,乃至实验室的预约,所有环节都在数字化平台上流畅运转,减少了人力操作的繁琐与误差,让每一份

对比分析:GBDT、XGBoost、CatBoost和LightGBM

对比分析:GBDT、XGBoost、CatBoost和LightGBM 梯度提升决策树(GBDT)是当前机器学习中常用的集成学习方法之一,它通过集成多个弱学习器(通常是决策树)来构建强学习器。GBDT在分类和回归任务中表现优异,并在许多机器学习竞赛中频频获胜。随着算法的发展,GBDT衍生出了多种实现,其中以XGBoost、CatBoost和LightGBM最为知名。本文将详细介绍这四种算法的特点

xgboost的参数设定

先列出Xgboost中可指定的参数,参数的详细说明如下 总共有3类参数:通用参数/general parameters, 集成(增强)参数/booster parameters 和 任务参数/task parameters 通用参数/General Parameters booster [default=gbtree] gbtree 和 gblinear silent [default

XGBoost学习

XGBoost广泛应用于推荐系统、信用评分、疾病预测等多个领域。通过实例分析,我们可以直观感受到其在实际问题解决中的强大威力。 下面是一个使用Python实现的简单XGBoost分类任务示例,包括数据预处理、模型训练、评估和预测的基本步骤。此示例使用了著名的鸢尾花(Iris)数据集,该数据集可以直接从sklearn库获取。代码仅供参考~ # 导入所需库import xgboost as xg

PSO-xgboost分类模型,粒子群优化xgboost(多输入多分类)-MATLAB实现

PSO-xgboost分类模型,粒子群优化xgboost(多输入多分类)-MATLAB实现 使用粒子群优化 (PSO) 来优化 XGBoost 分类模型的超参数是一种有效的方法,可以提高模型的性能。 结果 获取方式 https://mbd.pub/o/bread/mbd-ZpeWlZ9t

python是TIOBE编程语言排名第一的编程语言,它有什么优点?它的使用场景有哪些?用python打印数字1--100,用python打印九九乘法表怎么写?

Python是TIOBE编程语言排行榜排名第一的编程语言 。 python是一种解释性、交互式、面向对象的跨平台的语言。 python设计者及名称由来         Guido van Rossum 荷兰人---吉多·范罗苏姆,是 Python 编程语言的最初设计者,在 Python 社区一直担当终身仁慈独裁者(BDFL)的角色。2018 年 7 月12 日,他宣布不再担任 Python

详解会议中控系统及其优点特点有哪些?

详解会议中控系统及其优点特点有哪些?   什么是会议中控系统? 如果说过去“会议中控系统”对于大众来说是高端、专业的领域,那么随着数字化、网络化建设的不断推进,其实现在会议中控早已揭开了神秘的面纱。更甚者已经从专业的行业区域渗透到了家庭化的使用。那什么是会议中控系统呢? 会议中控系统,简单的说就是通过一个中央控制器把会议室内的所有的和电有关的设备都几种在一个操作终端来控制。比如投影机,投影