xgboost:分割查找:Weighted Quantile Sketch

news2024/10/7 10:16:40

Weighted Quantile Sketch

专门处理流式和分布式加权数据集的一种分桶的方法

近似算法的一个重要步骤是提出候选分裂点。通常使用特征的百分位数来使候选数据均匀分布。形式上,设 D k = ( x 1 k , h 1 ) , ( x 2 k , h 2 ) ⋅ ⋅ ⋅ ( x n k , h n ) D_k = {(x_{1k}, h_1),(x_{2k}, h_2)···(x_{nk}, h_n)} Dk=(x1k,h1)(x2k,h2)⋅⋅⋅(xnk,hn)表示每个训练实例的第 k k k个特征值和二阶梯度统计量。我们可以定义一个秩函数 r k : R → [ 0 , + ∞ ) rk: R→[0,+∞) rk:R[0,+):
r k ( z ) = 1 ∑ ( x , h ) ∈ D k h ∑ ( x , h ) ∈ D k , x < z h , r_k(z)=\dfrac{1}{\sum_{(x,h)\in\mathcal{D}_k}h}\sum\limits_{(x,h)\in\mathcal{D}_k,x<z}h, rk(z)=(x,h)Dkh1(x,h)Dk,x<zh,
表示在特征值 k k k小于 z z z的样本数的比例,目标找到候选划分点 { s k 1 , s k 2 , ⋯ s k l } , \{s_{k1},s_{k2},\cdots s_{kl}\}, {sk1,sk2,skl},
∣ r k ( s k , j ) − r k ( s k , j + 1 ) ∣ < ϵ , s k 1 = min ⁡ i x i k , s k l = max ⁡ i x i k . |r_k(s_{k,j})-r_k(s_{k,j+1})|<\epsilon,s_{k1}=\min\limits_i\mathbf{x}_{ik},s_{kl}=\max\limits_i\mathbf{x}_{ik}. rk(sk,j)rk(sk,j+1)<ϵ,sk1=iminxik,skl=imaxxik.
ϵ \epsilon ϵ:近似因子,分成 1 / ϵ 1/\epsilon 1/ϵ个候选点。每个数据点使用 h i h_i hi加权。

加权的平方损失:
∑ i = 1 n 1 2 h i ( f t ( x i ) − g i / h i ) 2 + Ω ( f t ) + c o n s t a n t , \sum\limits_{i=1}^n\dfrac{1}{2}h_i(f_t(\mathbf{x}_i)-g_i/h_i)^2+\Omega(f_t)+constant, i=1n21hi(ft(xi)gi/hi)2+Ω(ft)+constant,
g i / h i gi/hi gi/hi:标签;

h i h_i hi:权重;

针对加权数据集的分位数算法,使用分布式加权分位数算法,该算法能够处理加权数据,并具有可证明的理论保证,可以处理大型数据集。总体思想是提出一种支持合并和修剪操作的数据结构,并证明每个操作都保持一定的精度水平。

要理解作者的加权分位数划分快速算法实现先要理解非加权的分位数划分算法:

GK算法1

GK算法是一种在具有确定性误差边界的高速数据流中计算近似分位数的快速算法。对于大小为N的数据流,其中N是预先未知的,算法将流划分为大小呈指数增长的子流。对于每个具有固定大小的子流,我们使用一种新的算法计算和维护一个多层次的summay。为了实现高速性能,该算法使用简单的分块合并和采样操作。总的来说,对于固定大小的流和任意大小的流,算法具有 O ( N l o g ( 1 / ϵ ∗ l o g ( ϵ N ) ) O(N log(1/\epsilon *log(\epsilon N)) O(Nlog(1/ϵlog(ϵN))的计算成本,如果 ϵ \epsilon ϵ是固定的,则每个元素的平均更新成本为 O ( l o g l o g N ) O(log logN) O(loglogN)

  • 合并操作:结合两个summay带着误差 ϵ 1 \epsilon_1 ϵ1 ϵ 2 \epsilon_2 ϵ2的结构,并且合并后的summay的近似误差是 m a x ( ϵ 1 , ϵ 2 ) max(\epsilon_1,\epsilon_2) max(ϵ1,ϵ2)
  • 剪枝操作:减少在summay的元素数量到 b + 1 b+1 b+1和改变近似误差从 ϵ \epsilon ϵ ϵ + 1 b \epsilon+\frac{1}{b} ϵ+b1

GK算法的产生要解决什么问题?

为了满足对数据近似分位点的频繁查询,考虑以下几种场景:

1. 固定不变的数据集
  2. 流式数据,数据长度不断增加
  3. 数据源分布存储,但数据长度固定
  4. 数据源分布存储+流式数据,数据长度不断增加

对于固定不变的数据集,排序后直接用二分法计算分位点,但是对于2、3、4,如果每次新增数据就重新排序,会带来很大的计算开销。GK算法就是用来解决这样的问题。

GK算法的具体步骤和实现2

具体步骤在论文中2

总体算法框架:

在这里插入图片描述

压缩算法:

在这里插入图片描述

xgboost的带权重样本的分位点近似算法

算法流程:

在这里插入图片描述

相关证明:
计算rank:
r D − ( y ) = ∑ ( x , w ) ∈ D , x < y w r_\mathcal{D}^-(y)=\sum\limits_{(x,w)\in\mathcal{D},x<y}w rD(y)=(x,w)D,x<yw

r D + ( y ) = ∑ ( x , w ) ∈ D , x ≤ y w r_\mathcal D^+(y)=\sum\limits_{(x,w)\in\mathcal D,x\le y}w rD+(y)=(x,w)D,xyw

计算权重:
ω ( D ) = ∑ ( x , w ) ∈ D w \omega(\mathcal{D})=\sum\limits_{(x,w)\in\mathcal{D}}w ω(D)=(x,w)Dw

定义四元组:
Q ( D ) = { S , r ~ D + , r ~ D − , ω ~ D } , Q({\mathcal D})=\{S,\tilde{r}_{\mathcal D}^{+},\tilde{r}_{\mathcal D}^{-},\tilde{\omega}_{\mathcal D}\}, Q(D)={S,r~D+,r~D,ω~D},
{ S , r ~ D + , r ~ D − , ω ~ D } , \{S,\tilde{r}_{\mathcal D}^{+},\tilde{r}_{\mathcal D}^{-},\tilde{\omega}_{\mathcal D}\}, {S,r~D+,r~D,ω~D},分别代表特征值、rank和权重;

其中的merge操作:
在这里插入图片描述

其中的prune

在这里插入图片描述
代码实现

///<The tuple in D
typedef struct D_tuple
{
	float x;
	float w;
}D_tuple_t;


///<The quintuple summary from set D
typedef struct Summary_Q
{
	std::vector<float> S;
	float r_positive;
	float r_negative;
	float w;
}Summary_Q_t;

1345267

参考:


  1. Zhang, Q., & Wang, W. (2007). A Fast Algorithm for Approximate Quantiles in High Speed Data Streams. 19th International Conference on Scientific and Statistical Database Management (SSDBM 2007). doi:10.1109/ssdbm.2007.27 ↩︎ ↩︎

  2. Stream Algorithms: Order Statistics | paper cruncher (wordpress.com) ↩︎ ↩︎ ↩︎

  3. ( GK Summay算法(ϵ−approximate ϕ−quantile)_gk算法_cyber19的博客-CSDN博客 ↩︎

  4. [Stream Algorithms: Order Statistics | paper cruncher (wordpress.com)](https://titanssword.github.io/2018-07-26-GK.html) ↩︎

  5. Greenwald, M., & Khanna, S. (2001). Space-efficient online computation of quantile summaries. ACM SIGMOD Record, 30(2), 58–66. doi:10.1145/376284.375670 ↩︎

  6. XGBoost解读(2)–近似分割算法 • YXZF’s Blog ↩︎

  7. xgboost之分位点算法 - Data Valley
    boost-v2/) ↩︎

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

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

相关文章

Redis持久化:RDB、AOF

Redis持久化一. RDB(1) save(2) bgsave(3) 总结二. AOF(1) 重写优化(2) RDB和AOF的区别引入&#xff1a;Redis用内存存储数据&#xff0c;有数据丢失的问题&#xff1b; 一. RDB RDB&#xff08;Redis Database Bcakup file&#xff09;即Redis数据备份文件&#xff0c;或Red…

如何用 Python采集 <豆某yin片>并作词云图分析 ?

嗨害大家好鸭&#xff01;我是小熊猫~ 总有那么一句银幕台词能打动人心 总有那么一幕名导名作念念不忘 不知道大家有多久没有放松一下了呢&#xff1f; 本次就来给大家采集一下某瓣电影并做词云分析 康康哪一部才是大家心中的经典呢&#xff1f; 最近又有哪一部可能会成为…

拉链表详解

目录 一、拉链表概念 二、拉链表对应的业务需求 三、代码实现 3.1 数据初始化&#xff1a; 3.2 创建ods层增量表&#xff1a; 3.3 创建dwd层拉链表 3.4 数据更新 &#xff0c;将数据日期为2023-3-4的日期添加到拉链表中 3.4.1 先追加数据到ods层表 3.4.2 更新dwd层表数据 …

【SpringCloud】SpringCloud详解之Ribbon实战

目录前言SpringCloud Ribbon 负载均衡一需求二.RestTemplate远程调用配置负载均衡(order服务内修改)三.Ribbon实现负载均衡的原理四.Ribbon负载均衡策略1.负载均衡种类2.配置负载均衡(order服务中配置)五.Ribbon的饥饿加载配置(在order服务配置)前言 微服务中比如用户服务部署…

sklearn使用入门

文章目录1.机器学习1.1 机器学习简介1.2 有监督学习(supervised learning)1.3 无监督学习(unsupervised learning)1.4 半监督学习2. 机器学习工具SKlearn2.1 sklearn2.2 sklearn常用模块2.2.1 分类2.2.2 回归2.2.3 聚类2.2.4 降维2.2.5 模型选择2.2.6 数据预处理2.3 sklearn使用…

Android startActivityForResult()废弃了,代替方案案例

安卓项目compileSdk为32&#xff0c;在使用startActivityForResult()方法时发现Android studio提示此方法已经废弃了。 目前的代替方案案例。 // 确保 app 的 build.gradle中已经引入了androidx.appcompat:appcompat dependencies {implementation androidx.appcompat:appcomp…

操作系统之进程管理---每天一点点(春招加油呀)--知识点回顾(自问自答版本总结)

1.什么是进程&#xff1f;什么是线程&#xff1f;进程和线程的区别&#xff1f; 进程&#xff1a;资源分配和管理的基本单位 线程&#xff1a;程序执行的最小单位。 区别&#xff1a; 地址空间&#xff1a; 同一进程的所有线程共享本进程的地址空间&#xff0c;而不同的进程之间…

仓库拣货标签电子价格标签办公电子标牌

数字货架标签尺寸&#xff1a;2.13英寸、2.9英寸、4.2英寸、7.5英寸、10.2英寸技术&#xff1a;2.4G MHz无线通信技术&#xff0c;电子墨水显示。刷新20&#xff0c;000个标签/1小时/AP。3-5年的寿命&#xff0c;电池可以快速更换。ESL管理系统工作原理&#xff1a;实时显示最新…

【Maven】P3 依赖管理

依赖管理依赖配置依赖传送依赖具有传递性直接依赖与间接依赖依赖冲突可选依赖排除依赖依赖范围依赖配置 依赖指的是当前项目所需要的jar包&#xff0c;在 pom.xml 中可以看到 <!--设置当前项目所依赖的所有jar包--> <dependencies><!--设置一个具体的依赖jar-…

【CVPR2022】Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation

论文标题&#xff1a;Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation收录&#xff1a;CVPR 2022paper: https://arxiv.org/abs/2203.00962code: https://github.com/zhaozhengChen/ReCAM解读&#xff1a;https://zhuanlan.zhihu.com/p/478133151https:…

mx-font

Abstract 短镜头字体生成(FFG)方法必须满足两个目标:生成的图像既要保留目标字符的底层全局结构,又要呈现多样化的局部参考风格。现有的FFG方法旨在通过提取通用表示样式或提取多个组件样式表示来分离内容和样式。然而,以往的方法要么无法捕捉不同的本地风格,要么无法推广到…

初识系统移植

系统移植简单来说就是将准备好的内核&#xff08;OS&#xff09;移植到一台主机或者开发板中&#xff0c;类似于器官移植&#xff0c;将准备好的器官移植到人体中。 为什么需要系统移植&#xff1f; 没有内核的情况下&#xff0c;上层如果要控制硬件只能将C语言代码先编译成二…

【C++】栈和队列(stackqueue)介绍,实现,oj

&#x1f345;一文包教会&#xff0c;不再赘述栈最基本的结构和性质&#xff08;栈的基本介绍在这里&#xff09; &#xff08;队列基本介绍和实现&#xff09;,博主主页还有很多栈和队列oj题哦~ 目录 ☃️1.stack_list &#x1f41d;1.1 介绍 &#x1f41d;1.2 stack和list实…

人工智能|HCIA-AI V3.0(一)——人工智能概览

文章目录一 AI、机器学习、深度学习的关系二 AI的三个方面的应用2.1 计算机视觉2.2 语音处理2.3 自然语言处理三、争议四、未来展望一 AI、机器学习、深度学习的关系 人工智能:是研究、开发用于模拟、延伸和扩展人的智能的理论、方法及应用系统的一- 门新的技术科学。 机器学习…

【蓝桥杯集训15】求最短路存在负权边——spaf算法(3 / 4)

——SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称 单源最短路&#xff0c;且图中没有负环就可以用spfa 目录 spaf求最短路模板 852. spfa判断负环 341. 最优贸易 - spfa 双向建图 3305. 作物杂交 - spaf求最短路模板 只有当一个点的前驱结点更新了&#xff0c;…

多线程共享数据结构的无锁释放

目录背景问题共享结构的无锁释放对比ref-cntrcuepoch-based reclamhazard pointer: 冒险指针结构原理正确性保证范例参考背景 多线程共享一个数据结构。 共享数据结构&#xff0c;可以做到节约内存。 但是多线程共享&#xff0c;可能会有问题&#xff0c;比如同步的问题。 问…

(Android-RTC-9)PeerConnectionFactory

开篇前瞎扯。很久没发技术文章了&#xff0c;此文一直放着草稿箱没有完成&#xff0c;感觉自己在家庭和工作中找到了拖延的借口&#xff0c;开始慢慢变得懒惰了&#xff0c;那是万万不行的。恰逢2023开年ChatGPT的爆火&#xff0c;更让我这些普通程序员危机感瞬间飙升&#xff…

安全规约第一章

文章目录传统密码和现代密码的区别古典密码近代密码现代密码定义模型证明现代密码学CryptographyCryptanalysisCryptosystemScheme如何定义算法步骤第一步&#xff0c;搞清楚安全服务目标第二步&#xff0c;计算过程中需要几方的参与需要几个算法描述它算法命名谁来运行哪一个算…

03_Apache Pulsar的Local与分布式集群构建、Pulsar的分布式集群模式、Pulsar的分布式集群模式构建\启动\测试

1.3.Apache Pulsar的Local与分布式集群构建 1.3.1 Apache Pulsar的Local模式构建 1.3.1.1.Apache Pulsar的Local模式基本使用 1.3.2.Apache Pulsar的分布式集群模式 1.3.2.1.安装zookeeper集群 1.3.3.Apache Pulsar的分布式集群模式构建 1.3.4.Apache Pulsar的分布式集群模式启…

Sparx Systems Pro Cloud Server crack

Sparx Systems Pro Cloud Server crack 云服务器 添加了新的“OSLC会话超时”设置&#xff0c;以配置OSLC用户将注销的最长非活动时间。 改进了对重复SQL列名的处理。 FLS&#xff1a;为“组”添加了对其他Microsoft Active Directory名称格式的支持。 云配置客户端 在扩展服务…