xgboost之分位点算法

1. 基本概念

1.1 分位点

输入数据: 14, 19, 3, 15, 4, 6, 1, 13, 13, 7, 11, 8, 4, 5, 15, 2

则排序后,该组数据为: 1, 2, 3, 4, 4, 5, 6, 7, 8, 11, 13, 13, 14, 15, 15, 19. 如下图所示:

quantile

在上面的序列中,

  • 第1小的数是什么? 很明显是:1 ()
  • 第4小的数是什么? 答案是:4 ()
  • 第50%小的数是什么? 50% * 16 = 8(), 则答案为:7

什么是分位点呢? ϕ-quantile表示 的元素,其中,为序列中元素的个数。例如,在上面的例子中:

  • 0.25-quantile是什么? ,所以答案为:4
  • 0.5-quantile是什么? ,所以答案为:7

1.2 ε-approximate 分位点

假定序列的大小为,给定误差,其 分位点为序列中的一些元素,且这些元素的rank值满足:。以上面的序列为例,给定,此时,则rank值在区间的元素为:,即: *0.1-appoximate 0.5-quantile*为:

注意:ϕ-quantile对应区间的计算方法在参考[3]和参考[4]有所不同(是否取整,如何取整),这里采用参考[3]中的方法

1.3 quantile summary

ε-approximate quantile summary 是一种数据结构,该数据结构能够以 的精度计算任意的分位查询。当一个序列无法全部加载到内存时,常常采用quantile suammary近似的计算分位点。

An ε-approximate quantile summary of a sequence of N elements is a data structure that can answer quantile queries about the sequence to within a precision of εN [5].

下图展示了上面序列的一个quantile suammary,可以看出:quantile summary中value是原序列的一个子集,通过这种方式就能达到减少数据量的效果。

summary

如何利用quantile summary呢?

第2小的数是什么? 在上面的quantile summary中,与2最近的rank为1,则答案近似为:1 () 第25%小的数是什么? (),在上面的quantile summary中,与4最近的rank为4,则答案“近似”为:4()

注意:在quantile summary中,需要保留原序列中的最小值和最大值。

2. 加权分位点

在上面的描述中,每个数据的计数都为1,即权重都为1,所以rank的取值也都是整数。在xgboost中,每个样本的权重会出现小数,此时会出现这这样的情况:“第0.5个元素是什么?”。如下图所示,第0.5个元素为:3。

WieghtedQuantile

当数据量非常大时,也需要使用quantile summary的方式来近似计算分位点。

在xgboost中,需要根据特征值以及样本的权重分布,近似计算特征值的分位点,实现近似分割算法。近似计算特征值分位点的算法称为:weighted quantile sketch[2],该算法满足quantile summary通常的两个操作:merge和prune。

2.1 定义和结论

2.1.1 基本定义

给定multi-set ,其中:,假定顺序为:升序。定义两个排序函数,

这两个函数对应上面的rank取值,分别表示特征值 rank取值的最小值和最大值,这里需要注意函数的定义域。

由于D是multi-set,所以可能存在完全相同的

定义权重函数:

整个数据集上的权重和定义为:

2.1.2 quantile summary of weighted data

加权数据的quantile suammary定义为四元组:

其中: ,

满足以下条件:

  1. 对于所有的,满足,且分别是最小值和最大值,即:
  2. 三个函数:,并且有:1) ; 2) ;3) 。当时,取得等号
  3. ,并且:

提示: ,严格递增,之间可能包含很多元素,但这些元素并不在summary中(所以才有第3条特性)

2.1.3 函数定义域扩展

函数的定义域为,现将其扩展到实数域。

时,

时,

时,

扩展后的函数仍然满足上面三个条件。

2.1.4 ε-approximate quantile summary

给定quantile suammary , 对于任意的,如果满足:

为 ε-approximate quantile summary。

对于, 当且仅当下面两个条件满足时,其为ε-approximate quantile summary:

对于上面第二个不等式,可以理解为:开区间 中权重之和,由此可以与“分桶”相结合。

2.2 初始化

给定multi-set 可以定义为:, 且对于:

此时,是0-approximate quantile summary.

2.2 merge

假定:

, 合并后的quantile sumamry为: 满足:

如果-approximate quantile summary以及-approximate quantile summary, 则:-approximate quantile summary。

2.3 prune

给定 , 其中: ,给定memory budget , prune操作会返回一个新的quantile summary

其中,

1、 , 且:

g

2、 中的与原summary保持一致;

并且 -approximate quantile summary。


Reference

  1. XGBoost: A Scalable Tree Boosting System
  2. XGBoost: A Scalable Tree Boosting System Supplementary Material
  3. A Fast Algorithm for Approximate Quantiles in High Speed Data Streams
  4. XGBoost解读(2)–近似分割算法
  5. Space-Efficient Online Computation of Quantile Summaries
----EOF-----

Categories: xgboost Tags: xgboost quantile