参考&引用:https://blog.youkuaiyun.com/huacha__/article/details/81057150&https://blog.youkuaiyun.com/qq_24519677/article/details/82811215&https://blog.youkuaiyun.com/u010242233/article/details/79769950 &原始论文
目录
一. GOSS (Gradient-based One-Side Sampling)
二、EFB(Exclusive Feature Bundling)
一.GOSS (Gradient-based One-Side Sampling)
简述:基于梯度的采样
输入:训练数据,迭代步数d,大梯度数据的采样率a,小梯度数据的采样率b,损失函数和若学习器的类型(一般为决策树);
输出:训练好的强学习器;
(1)根据样本点的梯度的绝对值对它们进行降序排序;
(2)对排序后的结果选取前a*100%的样本生成一个大梯度样本点的子集;
(3)对剩下的样本集合(1-a)*100%的样本,随机的选取b*(1-a)*100%个样本点,生成一个小梯度样本点的集合;
(4)将大梯度样本和采样的小梯度样本合并;
(5)将小梯度样本乘上一个权重系数;
(6)使用上述的采样的样本,学习一个新的弱学习器;
(7)不断地重复(1)~(6)步骤直到达到规定的迭代次数或者收敛为止。
通过上面的算法可以在不改变数据分布的前提下不损失学习器精度的同时大大的减少模型学习的速率。
二、EFB(Exclusive Feature Bundling)
简述:互斥特征绑定建立直方图。使用图的连接度来代表冲突程度。
算法描述:
输入:特征F,最大冲突数K,图G;
输出:特征捆绑集合bundles;
(1)构造一个边带有权重的图,其权值对应于特征之间的总冲突;
(2)通过特征在图中的度来降序排序特征;
(3)检查有序列表中的每个特征,并将其分配给具有小冲突的现有bundling(由控制),或创建新bundling。
Histogram算法有如下的一些优点:
(1)减少分割增益的计算量:xgboost中默认使用的是pre-sorted算法,需要次的计算,而Histogram算法只需要计算次,并且远小于;
(2)通过直方图相减来进一步的加速模型的训练:在二叉树中可以通过利用叶节点的父节点和相邻节点的直方图的相减来获得该叶节点的直方图。所以仅仅需要为一个叶节点建立直方图 (其小于它的相邻节点)就可以通过直方图的相减来获得相邻节点的直方图,而这花费的代价()很小。
(3)减少内存的使用:可以将连续的值替换为离散的bins。 如果较小, 可以利用较小的数据类型来存储训练数据并且无需为 pre-sorting 特征值存储额外的信息。
(4)减少并行学习的通信代价。
我们称使用GOSS算法和EFB算法的梯度提升树(GBDT)称之为LightGBM。
三、类别特征值的最优分割
基本的思想是根据训练目标的相关性对类别进行重排序。 更具体的说,根据累加值()重新对(类别特征的)直方图进行排序,然后在排好序的直方图中寻找最好的分割点。(对比one-hot不均匀,容易切分小数据量的分支)
四、4.1 Leaf-wise的决策树生长策略
四、Lightgbm中的并行学习
特征并行
数据并行
投票并行