总结起来,LightGBM相较于XGBoost的提升主要在于:
支持类别特征,无需one-hot编码;
采用叶节点分裂而非层分裂,学习精度更高;
GOSS(基于梯度的单边采样),对海量学习数据,根据其梯度,筛除绝大部分的小梯度样本(几乎无更新作用),保持精度的同时加快速度;
EFB(独立特征合并),针对海量稀疏数据,根据数据间的冲突度(如cos夹角,0101和1010的冲突很小,因为非零位不相同,非零位不相同的占比越高,冲突度越少),对冲突度小的特征进行合并,变稀疏矩阵为稠密矩阵,减少特征维度;
在直方图加速算法中,支持直方图减法,对下一层样本的直方图绘制,减少时间(右孩子直方图=父节点直方图-左孩子直方图);
优化了多线程加速问题。
解题思路
前面提到了,LightGBM是Xgboost的更高效实现, 由微软发布。
XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增