1.原理
LightGBM 是一个梯度 boosting 框架, 使用基于学习算法的决策树。
1.1 GBDT和 LightGBM诞生的原因
GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型。
但是 GBDT 在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的 GBDT 算法是不能满足其需求的。
因此为了解决 GBDT 在海量数据遇到的问题,提出了LightGBM。LightGBM (Light Gradient Boosting Machine)是一个实现 GBDT 算法的框架,支持高效率的并行训练。
1.2 基于GBDT的另一种框架:Xgboost
xgboost是基于预排序的方法(pre-sorted)的决策树算法。这种构建决策树的算法基本思想是:
- 对所有特征都按照特征的数值进行预排序;
- 在遍历分割点的时候用 O(#data) 的代价找到一个特征上的最好分割点;
- 找到一个特征的分割点后,将数据分裂成左右子节点。
优点是:能精确地找到分割点。
缺点是:1、空间消耗大。这样的算法需要保存数据的特征值,还保存了特征排序的结果(例如:保存排序后的索引,为了后续快速的计算分割点),这里需要消耗训练数据两倍的内存。2、时间上也有较大的开销ÿ