LightGBM的并行优化
来源:互联网 发布:windows自带编译器 编辑:程序博客网 时间:2024/06/04 19:04
上一篇文章介绍了LightGBM算法的特点,总结起来LightGBM采用Histogram算法进行特征选择以及采用Leaf-wise的决策树生长策略,使其在一批以树模型为基模型的boosting算法中脱颖而出。在时间和空间上都更胜一筹,准确率也比其他模型表现得更好。这些模型在处理一般规模的数据时,单机即可以解决,然而当数据规模更大时,即需要进行分布式计算,分担每台机器(worker)的压力。这篇文章介绍LightGBM的两种并行学习算法(Feature Parallel & Data Parallel),以及他们较传统并行算法的特别之处。
- Feature Parallel
特征并行算法目的是在决策树生成过程中的每次迭代,高效地找到最优特征分裂点。特征并行的主要思想是在不同机器在不同的特征集合上分别寻找最优的分割点,然后在机器间同步最优的分割点。
传统的特征并行算法
- 根据不同的特征子集,将数据集进行垂直切分。(不同机器worker有不同的特征子集)
- 每个worker寻找局部的最优分裂特征以及分裂点。
- 不同worker之间进行网络传输,交换最优分裂信息,最终得到最优的分裂信息。
- 具有最优分裂特征的worker,局部进行分裂,并将分裂结果广播到其他worker。
- 其他worker根据接收到的数据进行切分数据。
该方法不能有效地加速特征选择的效率,当数据量#data很大时,该并行方法不能加快效率。并且,最优的分裂结果需要在worker之间进行传输,需要消耗很多的传输资源以及传输时间。
LightGBM的特征并行算法
LightGBM并没有垂直的切分数据集,而是每个worker都有全量的训练数据,因此最优的特征分裂结果不需要传输到其他worker中,只需要将最优特征以及分裂点告诉其他worker,worker随后本地自己进行处理。处理过程如下:- 每个worker在基于局部的特征集合找到最优分裂特征。
- workder间传输最优分裂信息,并得到全局最优分裂信息。
- 每个worker基于全局最优分裂信息,在本地进行数据分裂,生成决策树。
然而,当数据量很大时,特征并行算法还是受限于特征分裂效率。因此,当数据量大时,推荐使用数据并行算法。
- Data Parallel
传统的数据并行算法
- 水平切分数据集。
- 每个worker基于数据集构建局部特征直方图(Histogram)。
- 归并所有局部的特征直方图,得到全局直方图。
- 找到最优分裂信息,进行数据分裂。
缺点:网络传输代价比较大,如果使用point-to-point的传输算法,每个worker的传输代价为O(#machine * #feature * #bin). 如果使用All Reduce并行算子,传输代价为O(2* #feature * #bin).
- LightGBM的数据并行算法
- LightGBM算法使用Reduce Scatter并行算子归并来自不同worker的不同特征子集的直方图,然后在局部归并的直方图中找到最优局部分裂信息,最终同步找到最优的分裂信息。
- 除此之外,LightGBM使用直方图减法加快训练速度。我们只需要对其中一个子节点进行数据传输,另一个子节点可以通过histogram subtraction得到。
- LightGBM可以将传输代价降低为O(0.5 * #feature * #bin)。
- 基于投票的并行算法
基于投票机制的并行算法,是在每个worker中选出top k个分裂特征,然后将每个worker选出的k个特征进行汇总,并选出全局分裂特征,进行数据分裂。有理论证明,这种voting parallel以很大的概率选出实际最优的特征,因此不用担心top k的问题。
下篇文章介绍一下LightGBM Data Parallel的Reduce Scatter并行算子,该并行传输算法非常有效的解决传输代价问题。
- LightGBM的并行优化
- 常用并行计算算子原理及其在LightGBM中的实现
- 众核上的数据仓库并行优化
- 并行优化
- OpenMp 程序优化,怎么让并行达到并行的效果!
- lightgbm_predict4j:LightGBM在线预测的java实现
- LightGBM算法的特别之处
- GreenPlum的并行查询优化策略
- 矩阵乘法的并行算法优化
- GreenPlum的并行查询优化策略
- 转载:GreenPlum的并行查询优化策略
- GreenPlum的并行查询优化策略
- 在Windows下安装LightGBM的Python包
- 我的一个新的并行优化定理
- 关于并行优化
- 矩阵乘法并行优化
- storm并行度优化
- Hive优化--并行执行
- Oracle数据库对象的逻辑、物理、内存结构
- main方法
- 2 编写一个应用程序,用户分别从两个文本框输入学生的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。 程序运行效果如图:
- rsync通过服务同步
- B树、B-树、B+树、B*树
- LightGBM的并行优化
- Centos7.2安装Apache2.4
- JavaWeb学习笔记-Web基础-03
- 《Google软件测试之道》【PDF】下载
- android studio如何复制错误信息
- MAC安装Hadoop2.8
- 引用文件,require,require_once,incloud,incloud_once各自用途及区别
- flume学习笔记一
- 空间转换成时间——“改写的广搜”完成深搜(全遍历情况)