树模型详解3-xgboost

news2024/11/15 15:38:28

回归树:

表达式为T(x)=wq(x),意思为:一个样本x,落到树的哪个叶子结点由q(x)得出,具体叶子结点对应的值由w函数得出

如何构建函数:

eef02b6b387d455392d791f671fa737c.png

运用加法模型构建,由T个基学习器构成,也可表示为前T-1个树的结果再加上第T个树的结果

前向分步算法:一种贪心算法,每次只优化当前树至最优结果

下面写目标函数:

fe7e77c0e7db44748b19255135e23cfc.png

即为N个样本的损失函数总和加上正则项,其中正则项是t个模型复杂度的总和,目标是让这个函数最小 

 

正则项如何展开:

799519eaeead4918846ee8a9749ea099.png

T是所有叶子结点的个数,w是叶子结点值平方和

如果某棵回归树值的占比较大,则容易过拟合。 

 

再讲下第一部分的处理

一般可以用梯度下降来处理第一部分,但树模型是阶跃的(x<0一个值大于0一个值),不能这么搞

13c2e0ec22254f1ca457b268c2a4c599.png

 思路:把每一个样本的损失和变换为每个叶子结点的损失和f94f1e34e89f4ae0bcf8fa5894b53f84.png 

比如L结点1=L3+L5=(y3-w1)2+(y5-w1)2

ae7d6cadb5be4963ae7d6675b7e5672b.png

求解得w=y3+y5时能取最小值

因此可以把公式变形为:6c7101f0bb0c4d42899a49a3ec5a0ba7.png 

0b7f48673c69464ebf614db7c69461af.png

用二阶泰勒展开可得最终需要优化的表达式如上图,由此对每个变量w求最优解

c8b359c0322d473d9621ef0966cb6ba6.png

有二次方程公式推出:

38d0316273bc472881c5ec4615985ba6.png

那么就可以得到思路:每次拿到一个数据集,就可以把它的一阶梯度和二阶梯度gh,再得到每个叶子结点的GH,再由上面公式把叶子结点的值都计算出来 

 

那么接下来就是如何确定树的结构能让obj最小

法1:暴力穷举

法2:精确贪心:每次只关注一个节点如何做分裂,计算分裂后增益最大的划分

停止生长:增益均<=0,叶子结点包含样本数小于等于1,层级,叶子结点个数

算法实现:

90024d854159417dab39e32c90508f43.png

I:样本集合 d:特征维度 gain:增益 

k:遍历树

(注意可以并行计算,所以不会太慢,但是每次要根据不同的特征进行样本的排序,花时间)

优化:1.减少特征数(列采样)-按树/层随机选特征

2.每个特征下能不能减少特征值:分桶,每个桶样本数基本一致。改进方法是根据损失函数找加权分位点a87f8c0d7ce24086bc28bd8db1d883eb.png

即有hi个这个元素的样本 ,再按分桶方法去均匀分

策略上分为全局策略和局部策略,全局指一开始订好了3.5.7来分桶,则之后所有结点都按这三个值分,这很容易导致划到一定程度就化不下去了

而局部策略则是每个特征划分的特征值都不一样

 

接下来讲xgboost的缺失值处理:

有些特征不知道,但是样本id、gi、hi这些都能知道。处理方法是将缺失样本全部放到某一支,比较gain,放到最大的那支里

 

学习率:

837e7ac484e84639953b5adc344d8d5b.png

加个学习率让它不要学得太精确,防止过拟合

 

系统设计

1.核外块运算:

主要有两点,一是把没有一次性读完的数据放在磁盘上,二是单独开个线程,在运算的同时把磁盘的搬到核上,保持运算连贯性

 

2.分块并行:

解决的问题:

每次树结点分裂都要重新排序

算gain能否并行处理

 

解决方法:在基学习器学习前就排序,将排序结果保存在block中,按列进行存储。同时保存其索引,通过特征值就可以得到样本值是谁。进而得到gi,hi,得到gain,并把最大的gain筛选出来

392eff0b028441769016aa27f14593fb.png

 分块计算然后让调度中心判断哪块最大

2fc2866d21024eb1ae31be7de3b547eb.png

 

对缓存命中率低这点的优化:

2fec9ec84ae44972b959525c57072795.png

 给每个特征值加一个buffer记录记录g和h值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

智能视频监控在车辆管理与安全预警中的应用挑战

随着公共交通的客货运事业蓬勃发展&#xff0c;车辆保有量逐年增加&#xff0c;交通安全管理形势愈发严峻。为应对超速、疲劳驾驶、两客一危等违规驾驶行为&#xff0c;智能视频监控技术成为提升交通安全管理水平的关键手段。然而&#xff0c;尽管智能视频监控技术在理论上具有…

MATLAB(9)GIS模型

一、介绍 在GIS&#xff08;地理信息系统&#xff09;中&#xff0c;模型的实现可以非常多样化&#xff0c;取决于你想要解决的具体问题。MATLAB作为一个强大的数值计算和可视化工具&#xff0c;可以被用来开发GIS相关的模型&#xff0c;尽管它不是专门为GIS设计的&#xff08…

免费【2024】springboot 大学生二手电子产品交易平台设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

Python机器学习实战:分类算法之支持向量机-垃圾邮件识别

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 目录 支持向量机算法介绍 练习题 Python代码与分析 支持向量机和朴素贝叶斯的联系 支持向量机算法介绍 支持向量机&#…

时尚好看的APPUI设计离不开社交属性

时尚好看的APP UI设计离不开社交属性 艾斯视觉作为ui设计和前端开发从业者&#xff0c;其观点始终认为&#xff1a;移动应用程序&#xff08;APP&#xff09;已成为人们日常生活中不可或缺的一部分。一个时尚好看的APP UI设计不仅能够吸引用户&#xff0c;更能提升用户体验。而…

产品经理必备:8大高效的需求跟踪工具

本文将分享8款主流需求进度跟踪工具&#xff1a;PingCode、Worktile、Teambition、禅道、Tapd、Trello、Wrike、Monday.com。 每个产品经理都面临着如何有效监控项目进展、确保团队与目标同步的问题。选择合适的工具不仅可以减少误会和延误&#xff0c;还能显著提升团队的生产效…

【第六节】python的特殊语法和常用模块

目录 一、特殊语法 1.1 高阶函数 1.2 函数嵌套 1.3 装饰器 二、常用的模块 2.1 time模块 2.1.1 时间的表示方式 2.1.2 time 的使用方式 2.2 datetime 模块 2.2.1 datetime 模块总览 2.2.2 date 类 2.2.3 time 类 2.2.4 datetime 类 2.2.5 timedelta 类 2.3 rand…

轻松应对5W家企业月度排查!这家国企是如何做到的?

国央企的内控合规体系建设一直都是重中之重&#xff0c;今年年初国资委也提到要加强重要领域、重要业务、重要人员和关键环节的内控监督&#xff0c;构建全覆盖内控责任体系。 那么&#xff0c;国央企该如何响应政策号召&#xff0c;快速完善风险合规内控“三位一体”管控体系…

MATLAB(8)深度变化模型

一、前言 在MATLAB中模拟深度变化模型通常依赖于具体的应用场景&#xff0c;比如海洋深度、地下水深度、地形高度变化等。由于“深度变化”可以涉及多种物理过程和数学模型&#xff0c;我将提供一个简化的示例&#xff0c;该示例模拟了一个基于时间变化的深度变化模型&#xff…

nginx常见命令与报错

ps&#xff1a;macOS系统&#xff0c;以下内容是mac电脑&#xff0c;且使用brew安装的&#xff0c;其他慎看&#xff0c;因为安装位置等信息可能会略有不同 1.下载Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/…

商家转账到零钱2024最新开通必过攻略

微信支付商家转账到零钱功能申请设置了人工审核的门槛&#xff0c;本意是为了防止没有合规使用场景的商户滥用该功能&#xff0c;但这也让相当多的真实用户被一次次拒之门外。结合过去6年开通此类产品的经验&#xff0c;今天我们就以2024年最新的的商家转账到零钱的开通流程做一…

vmstat 内存排查的大杀器之一

主要作用 vmstat 为linux下提供的一个性能诊断工具。 内存排查方面&#xff0c;可以用它查看&#xff1a; 虚拟内存使用量空闲内存剩余量活跃内存量非活跃内存量缓冲内存使用量缓存内存使用量 硬盘排查方面&#xff0c;可以用它查看&#xff1a; 读/写磁盘总次数读/写磁盘扇…

15.2 zookeeper java client之Zookeeper官方使用(❤❤❤❤)

15.2 zookeeper java client 1. Zookeeper官方1.1 依赖1.2 Zookeeper客户端连接测试1.3 Zookeeper节点操作1.3.1 zooKeeper.create创建节点1.3.2 zooKeeper.exists获取节点详情1.3.3 zooKeeper.getData获取节点数据1.3.4 zooKeeper.getChildren获取节点下所有子节点名称1.3.5 …

Javaweb项目|springboot学生评奖评优管理系统的设计与实现

收藏点赞不迷路 关注作者有好处 文末获取源码 一、系统展示 二、万字文档展示 基于springboot学生评奖评优管理系统的设计与实现 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringSpringMVCMyBatisVue 工具&#xff1a;IDEA/Ecilpse、Navicat、Mav…

心动小站Ⅷ--全球近40%的工作岗位可能受到人工智能威胁

国际货币基金组织1月14日发布的报告估计&#xff0c;全球近40%的工作岗位可能受到人工智能崛起的威胁。 人工智能将越来越深入地融入几乎每一个行业。世界正在向前发展&#xff0c;如果你不跟上&#xff0c;就会落后。 为了避免落后&#xff0c;我们需要做两件事&#xff1a;…

代码审计:zzcms 2019

代码审计&#xff1a;zzcms 2019 漏洞列表如下(共计65个漏洞&#xff0c;附Exp&#xff0c;按时间顺序)&#xff1a; 未完待续… 1、install/index.php 8行处存在变量覆盖漏洞(影响install/step_6.php) Exp:http://127.0.0.3/install/index.php Post:admin<script>aler…

SmartEDA:解锁设计新境界,从工具到灵感的飞跃之旅!

在这个数据驱动的时代&#xff0c;每一次点击、每一次滑动都蕴含着无限的可能与洞察。然而&#xff0c;在众多数据分析工具中&#xff0c;SmartEDA不仅仅是一把解锁数据奥秘的钥匙&#xff0c;它更是一座桥梁&#xff0c;连接着冰冷的数据世界与创意无限的设计灵感之源。今天&a…

Nacos身份认证绕过的方法

因为在攻防或渗透的一些安全服务过程中&#xff0c;我们经常会遇到在公网能访问到的Nacos系统&#xff0c;按理来说这些系统都是要收缩到内网里面的&#xff0c;所以遇到这种情况我们肯定是要去尝试下能否进入到后台&#xff0c;之前团队搞过这类的实验&#xff0c;那就结合这次…

若依替换logo

别忘了清除浏览器缓存

Hive3:客户端工具DBeaver连接Hive

参考&#xff1a;DBeaver连接hive&#xff08;详细图解&#xff09; 这里&#xff0c;需要说明一点&#xff0c;在添加驱动的时候&#xff0c;你可能不知道自己需要什么版本的驱动 我的办法是&#xff0c;先通过IDEA链接上hive&#xff0c;然后&#xff0c;查看IDEA下载的版本…