XGBoost: A Scalable Tree Boosting System 论文笔记

ABSTRACT

可扩展的端到端的提升树系统

对于稀疏数据,提出稀疏感知算法

对于近似树学习,提出加权的分位数速算

缓存访问方式,数据压缩和分片,达到可扩展,节省资源,处理大规模数据

1.INTRODUCTION

xgb和neural net的ensemble都取得了很好的效果。

一种新颖的树学习算法,用于处理稀疏数据;

理论上合理的加权分位数草图过程使得能够在近似树学习中处理实例权重。(a theoretically justified weighted quantile sketch procedure enables handling instance weights in approximate tree learning.)

并行和分布式计算(Parallel and distributed computing )

我们提出了一种有效的缓存感知块结构,用于核外树学习。核外计算(exploits out-of-core computation)

端到端的系统,可以理解为一条龙服务(end-to-end system)

proposing a regularized learning objective

2.TREE BOOSTING IN A NUTSHELL

2.1 Regularized Learning Objective

里面有一段话很好的解释了什么是CART!

提出了一个更简单(相较于前人的工作),且更易于并行计算的regularized objective。

2.2 Gradient Tree Boosting

公式推导,就不写了,详细的解释可以参考下面的链接:

XGBoost 与 Boosted Tree

2.3 Shrinkage and Column Subsampling

每棵树构建完毕后,会有一个收缩因子加到权重上,类似于学习率。

列抽样,可以防止过拟合,还可以加速并行计算。行抽样也有,传统的就是行抽样。

3. SPLIT FINDING ALGORITHMS

3.1 Basic Exact Greedy Algorithm

最基本的一种,叫做精确贪心算法。

为了高效,首先根据特征值进行排序。

每一个特征,每一个特征的每一个值,进行计算损失增益。

3.2 Approximate Algorithm

上一种方法用在数据量不大和单机的情况下。

在数据部门完全读入内存或者是分布式的情况中,需要用到近似算法。

主要是根据特征的百分位数进行切分。分为两种,一种是直接在整棵树上切,称为global的;一种是在叶子上切,称为local的。各有利弊。

具体实现有各种binning strategies,比如直方图和分位数。

以上方式xgb都是支持的。

3.3 Weighted Quantile Sketch

hi(二阶导)作为加权的权值。事实上很难找到分位数切分标准。xgb对于加权的数据找到了一种可用于分布式的快速寻找分位数分割点的算法。

3.4 Sparsity-aware Split Finding

对于missing的数据,采取根据non-missing数据找到一个default分割方式进行处理。

4. SYSTEM DESIGN

4.1 Column Block for Parallel Learning

将数据存在内存中,成为block。

对于精确贪心算法(单机),将数据全部存入内存中。

对于近似算法,将数据进行行抽样,即每一台机器只保存部分数据。(其中提到:直方图聚合中的二值搜索也成为一种线性时间合并样式算法。)

每一个block当然也支持列抽样。

the block structure使得时间复杂度变为log n。

4.2 Cache-aware Access

对于精确贪婪算法,我们可以通过缓存感知预取算法来缓解这个问题。具体来说,我们在每个线程中分配一个内部缓冲区,将梯度统计量取入其中,然后以小批量的方式执行累积。这种预取将直接读/写依赖性改变为较长的依赖性,并有助于减少在大行数时的运行时开销。

对于近似算法,我们通过选择正确的块大小来解决问题。我们将块大小定义为块中包含的最大实例数,因为这反映了梯度统计的缓存存储成本。选择一个过小的块大小会导致每个线程的工作量小,导致效率低下的并行化。另一方面,过大的块导致高速缓存未命中,因为梯度统计不适合CPU缓存。一个好的块大小选择应该平衡这两个因素。

4.3 Blocks for Out-of-core Computation

采用两个方法,一个是block压缩,使用通用的压缩方法。

一个是块儿切分,将数据分散到多个磁盘上,每个机器使用一个线程把数据先预存到内存中,然后训练的线程直接读取,可以提高吞吐量。

5. RELATED WORKS

总结了几个点:更简单和益于并行的正则目标学习函数,列抽样,处理稀疏数据,内存感知和内存外计算,在加权数据上进行查找分位数。

6. END TO END EVALUATIONS

具体的几组实验,没啥可说的,就不介绍了,感兴趣的可以去看原论文了解。

7. CONCLUSION

以上的总结,使用较少的资源解决现实世界中的大规模数据问题。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值