美文网首页
LightGbm Paper Review

LightGbm Paper Review

作者: 呢嘻嘻嘻嘻嘻 | 来源:发表于2019-04-28 20:27 被阅读0次

    LightGBM

    首先拉出来LGBM的改进对象,XGBoost

         优点:

    • 利用了二阶梯度来对节点划分,相对其他GBM,精度有所提高
    • 利用了局部近似优化对分裂节点的贪心算法,取适当的eps,可以保持算法的性能且提高运算速度
    • 在损失函数中引入了L1,L2,控制复杂度,提高模型的鲁棒性
    • 权值收缩,特征下采样等手段
      缺点:
    • 基于数值Pre-Sorted,因此不能处理类别特征,时间复杂度高
    • 需要Pre-Sorted,耗内存(2 * data * features)
    • 数据分割点上,由于XGB对不同的数据特征使用Pre-Sorted算法,但是不同的特征的排序是不同的,所以分裂时需要对每个特征单独做依次分割,遍历次数 = data * features 来将数据分裂到左右子节点(尽管使用了局部近似,但是处理粒度还是过细)
    • 由于Pre-Sorted,所以在寻找特征分裂点(level-wise,XGB的生长策略为广度优先)时,产生大量的cache
    针对以上的缺点,LGBM提出改进
    • 基于Histogram(直方图)来代替Pre-Sorted 所构建的数据结构
    • 基于Hist,对于连续性特征将其类别化(Bundle)K类,然后根据直方图离散值统计,寻找最佳分割点
    • 利用GOSS(Gradient- based One-Side Sampling,梯度单边采样)来做采样算法
    • 使用EFB(Exclusive Feature Bundling,独立特征合并)来预处理稀疏数据
    1、Histogram Algorithm

         Pre-Sorted需要保存每一个特征的排序结构,所以要存储 2 * Features * Data * 4Bytes,而Hist 只需要保存离散值bin value,且不用存原始数据,Data * Features * 1Byte。
         对于且子节点相对应的Feature histogram 时,只需要构造一个子节点的Feature Histogram,另外一个子节点的Histogram 用父节点减去刚构造出来的即可。


    Histogram Algorithm
    2、GOSS(Gradient-based One-Side Sampling)

         根据样本某一个特征上的单梯度作为样本的权值进行训练。
    1)选择前a%个较大梯度的值作为大梯度值的训练样本
    2)从剩余的1-a%个较小梯度的值中,随机选择b%个作为小梯度值得训练样本
    3)对于较小梯度的样本,即b%(1-a%)samples ,在计算信息增益时将其放大(1-a)/b倍
    总结:a%samples + b%(1-a%)*samples 作为训练样本

    GOSS Algorithm
    3、EFB(Exclusive Feature Bundling)

    高维数据往往具有很强的稀疏性,提出EFB方法来解决高维数据稀疏问题。

    Greedy Bundling
    贪心算法,将如何确定哪些特征用于融合的问题转化为一个图着色算法,构建一个以feature为图中的点(V),以feature 之间的总冲突为图中的边(E)。
    (这里的冲突值是不是Feature之间的Corr?)
    首先按照对每个点(feature)做降序,然后将特征合并到冲突数小于K的Bundle或者新建另外一个Bundle,复杂度O(Feature^2)。
    Merge Exclusive Features
    然后通过Algo4对Bundle中的特征进行融合。
    由于每一个Bundle中的特征数量是不同的,所以要重新构建合并Bundle Feature 的Range,在第一个For循环中,记录每个Feature与之前Features累积的TotalRange。
    在第二个For循环中,根据之前的binRanges重新计算出新的BinValue(F[j]bin[i]+binRanges[j]),保证Feature之间的值不会冲突,这是对于稀疏矩阵进行优化,由于之前GreedyBundling 算法对Features 进行冲突检查确保Bundle内特征冲突尽可能少,所以特征之间的非0元素不会有太多的冲突。
              Data.Shape= Samples*bundles, s.t. bundles << features
    4、Leaf - Wise(Best - First) Tress Growth

         LGB 对于树的生长使用的是Leaf - Wise,而不是XGB的Level-Wise。主要是由于LGB认为 Level-Wise 的做法会产生一些地信息增益的节点,从而浪费计算资源。(Generally, Level-Wise 有防止过拟合的作用)LGB认为Leaf-Wise 能更好的追求精度,用max_depth 控制树的高度。又Histogram和GOSS有天然的正则作用,因此LGB使用Leaf-Wise也可以取得更好的效果,且不易过拟合。
    References:
         LightGBM
         XGBoost

    相关文章

      网友评论

          本文标题:LightGbm Paper Review

          本文链接:https://www.haomeiwen.com/subject/fytsnqtx.html