LightGBM算法的特别之处

本文探讨LightGBM算法的优化特点,包括Histogram算法,它通过离散化特征提高训练速度和内存效率;Leaf-wise生长策略,允许更高效地构建决策树,同时限制最大深度以防止过拟合;以及对类别特征的直接支持,减少空间和时间成本。尽管Histogram存在不精确分割点的问题,但在实践中表现出良好的效果,降低了过拟合风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自从微软推出了LightGBM,其在工业界表现的越来越好,很多比赛的Top选手也掏出LightGBM上分。所以,本文介绍下LightGBM的特别之处。

  • LightGBM算法在模型的训练速度和内存方面都有相应的优化。

    基于树模型的boosting算法,很多算法比如(xgboost 的默认设置)都是用预排序(pre-sorting)算法进行特征的选择和分裂。

    1. 首先,对所有特征按数值进行预排序。
    2. 其次,在每次的样本分割时,用O(# data)的代价找到每个特征的最优分割点。
    3. 最后,找到最后的特征以及分割点,将数据分裂成左右两个子节点。
      优缺点:
      这种pre-sorting算法能够准确找到分裂点,但是在空间和时间上有很大的开销。
      i. 由于需要对特征进行预排序并且需要保存排序后的索引值(为了后续快速的计算分裂点),因此内存需要训练数据的两倍。
      ii. 在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。

    LightGBM采用Histogram算法,其思想是将连续的浮点特征离散成k个离散值,并构造宽度为k的Histogram。然后遍历训练数据,统计每个离散值在直方图中的累计统计量。在进行特征选择时,只需要根据直方图的离散值,遍历寻找最优的分割点。

    Histogram 算法的优缺点:

    1. Histogram算法并不是完美的。由于特征被离散化后,找到的并不是很精确的分割点,所以会对结果产生影响。但在实际的数据集上表明,离散化的分裂点对最终的精度影响并不大,甚至会好一些。原因在于decision tree本身就是一个弱学习器,采用Histogram算法会起到正则化的效果,有效地防止模型的过拟合。
    2. 时间上的开销由原来的O(#data * #features)降到O(k * #features)。由于离散化,#bin远小于#data,因此时间上有很大的提升。
    3. Histogram算法还可以进一步加速。一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值