lightGBM算法梳理

首先,GBDT是一个非常流行的机器学习算法,另外基于GBDT实现的XGBoost也被广泛使用。但是当面对高纬度和大数据量时,其效率和可扩展性很难满足要求。主要的原因是对于每个特征,我们需要浏览所有的数据去计算每个可能分裂点的信息增益,真是非常耗时的。基于此,提出了两大技术:Gradient-based One-Side Sampling (GOSS) and Exclusive Feature Bundling (EFB).

1.Gradient-based One-Side Sampling (GOSS)

我们注意到具有不同梯度的样本在计算信息增益的时候扮演不同的角色。梯度更大的样本在信息增益的计算中贡献越多。因此,当我们对数据进行下采样时,应该尽量保留那些具有更大梯度的样本,然后随机抛弃具有小梯度的样本。具体来说,GOSS会根据样本梯度的绝对值进行排序,保留前a%的样本,然后从剩下的样本中选择b%。在采样好的样本中,在计算那些具有小梯度的样本的信息增益时,将他们的信息增益放大\tfrac{1-a}{b}倍。

2.Exclusive Feature Bundling(EFB)

高维数据通常是非常稀疏的。特征的稀疏性给了我们一个可能性去减少特征的维度。具体来讲,在稀疏的特征空间中,特征之间基本都是相互互斥的,例如它们不会同时取非零值。所以我们可以安全的捆绑互斥特征为单一特征。我们根据非零值的个数将所有特征排序。从其中选择互斥的特征,将这些特征进行捆绑。因为在lightGbm存在直方图算法,所以我们基于此将互斥特征进行合并,比如有两个互斥特征A和B,A的范围为(0,10],B的范围是(0,20],为了不让A和B重叠导致数据的丢失,我们为B添加一个偏移量,给B添加偏移量为10,所以B的范围变成了(10,30],然后将A和B合并为一个特征,其取值范围为(0,30]

3.基于直方图算法

lightgbm中的基于直方图算法给其运算带来了很大的便利,不管是离散特征还是连续特征,直方图算法都会将特征按照离散特征处理,将每个特征分成多个bin,然后在进行分裂点选择时,也是按照bin为单位来做选择。另外有了基于直方图算法,当我们计算了父节点的总梯度和左节点的梯度时,可以通过直方图做差得到右节点的梯度。

参考资j料:

1.lightGBM论文

LightGBM: A Highly Efficient Gradient Boosting Decision Tree

2.lightGBM与xgboost的对比

https://www.sohu.com/a/206208981_693397

https://blog.csdn.net/weixin_43178406/article/details/86706979

https://blog.csdn.net/huacha__/article/details/81057150

你可能感兴趣的:(python,machine,learning,lightGBM,ensemble,learning)