GK Summay算法(ϵ−approximate ϕ−quantile)

本文介绍了GK Summary算法,一种用于分布式系统和流式数据的近似分位点算法。GK Summary解决了在线查询summary的复杂度问题,通过维护相对值结构来优化插入和查询效率。算法包括插入、删除和压缩操作,并通过 bands 树结构进行高效管理。论文还探讨了压缩操作的执行时机以及算法的几个关键性质。
摘要由CSDN通过智能技术生成


0.前言

  XGBoost不仅在单机上通过OMP实现高度并行化,还通过MPI接口与近似分位点算法(论文中是weighted quantiles sketch)实现高效的分布式并行。其中weighted quantiles sketch框架基于 ϵ -approximate quantile近似分位点算法。不得不说分位点算法在分布式系统、流式系统中使用是个很天才的想法,很多分布式算法的基石。早在2001年,M.Greenwald和S. Khanna提出了GK Summay分位点近似算法(ϵ−approximate ϕ−quantile),直到到2007年被Q. Zhang和W. Wang提出的多层level的merge与compress/prune框架进行高度优化,而被称为A fast algorithm for approximate quantiles,目前XGBoost框架套用A fast algorithm算法结构。

  本文主要介绍GK Summay算法,后续博客会持续更新分布式GK Summay算法以及A fast algorithm for approximate quantiles算法,最后还会分析XGBoost中使用的weighted quantiles sketch算法,博客内容来源主要是原始论文与Emory大学的流式数据库的课程内容,本文仅提取出关键内容加入笔者的个人理解,有错误还望谅解与告知。

1.背景

   ϕquantile 分位点概念:排序为 rank=ϕN 的元素,其中 N 为序列中元素的个数。考虑以下例子数据:

11 , 21 , 24 , 61 , 81 , 39 , 89 , 56 , 12 , 51

  查询 ϕquantile 分位点所在数据前,需要对无序数据进行排序:

input:sort:rank:111112112224213612448139539516895675661812819518910

  排序后很容得到: 0.5quantile 对应 rank=5 ,值为39。 此外还有, 0.1quantile 对应 rank=1 ,值为11。

   ϵapproximate ϕquantile 分位点概念:考虑误差近似,即给定误差 ϵ 和分位点 ϕ ,只需要给定排序区间 r[(ϕε)N, (ϕ+ε)N] 内任意元素即可。类似地,给定 ε=0.1,ϕ=0.5 ,可得rank值在区间 { 4,5,6} 。给定区间内任意元素,都满足排序误差 ϵN 要求。

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

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

  对于场景1,可以对数据进行预排序,每次查询采用二分法精确查找,时间复杂度为 O(logN) 。考虑排序误差 ϵN , 我们可以对数据进行分桶,分桶长度为 ϵN 来保证误差,即分 1/ϵ 个桶,时间复杂度降低为 O(log(1/ϵ)) ,简单的离线排序和分桶都属于offline算法,无法满足场景2、3、4场景,这就需要本文介绍online算法来构建查询summary。

2. GK Summary算法

2.1 GK Summary定义

  GK Summary原本是针对流式系统分位点查询设计的,基于上述场景2。对于 ϵapproximate 分位点查询,可以构建查询summary结构,包含 m 个summary tuple的集合:

{(v1,min1,max1),(v2,min2,max2,...,(vm,minm,maxm)}

   定义: vi 为命中第 i 个summary的代表值,简单起见, vi 定义为 rank=mini 对应值,summary的 rank 区间为 [mini,maxi]
   约束:为了满足给定误差 ϵN maximiniϵN 。证明:显而易见。

  流式数据是不断更新,这种summary结构存在缺点:每次插入中间值,需要更新插入位置后面的summary,更新复杂度高。流式数据插入更新频率比查询频率要更高,必须优先解决数据插入构建summary的复杂度。

  对此,Greenwald与Khanna提出对数据插入更新友好的GK Summary结构,相对于存绝对值,GK Summary采用相对值的结构,类似地,包含 m 个summary tuple的集合:

(v0,g0,Δ0),(v1,
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值