Xgboost And Lightgbm

Xgboost 极端(extream)梯度提升

并行

特征粒度的并行,而不是和随机森林相同,决策树建立的并行。

Exact greedy算法

1、对每个特征都按照特征值进行排序
2、在每个排好序的特征都寻找最优切分点
3、用最优切分点进行切分
缺点:
1、空间消耗大。需要保存数据的特征值,Xgboost采用block结构,存储指向样本的索引,需要消耗两倍的内存。
2、时间开销大。在寻找最优切分点时,要对每个特征都进行排序,还要对每个特征的每个值都进行遍历,并计算增益。

决策树分裂节点公式

G a i n = 1 2 [ G L 2 H L + λ + G R 2 H R + λ ( G L + G R ) 2 H L + H R + λ ] γ Gain = \frac{1}{2}[\frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L + G_R)^2}{H_L +H_R + \lambda}] - \gamma
γ \gamma 为新增叶子节点的复杂度

LightGBM 轻量级 梯度提升机

基于直方图的决策树算法

把连续的浮点特征值离散化为k个整数(分桶的思想,这些桶称为bin.
比如[0,0.1) -> 0, [0.1,0.3)->1。
同时,将特征根据其所在的bin进行梯度累加。这样,遍历一次大数据后,直方图累积了需要的梯度信息,然后可以直接根据直方图,寻找最优的切分点。
在这里插入图片描述
如何分桶

  • 数值型特征
    关键是寻找分割点
  • 离散型特征(类别特征)

带深度限制的leaf-wise的叶子生长策略

基于直方图的稀疏特征优化

发布了178 篇原创文章 · 获赞 30 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/ACBattle/article/details/96186650