020网站开发,跨境电商平台推广,风车网站做花盆磨具,叙述网站的设计制作流程简介
GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型#xff0c;其主要思想是利用弱分类器#xff08;决策树#xff09;迭代训练以得到最优模型#xff0c;该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛#xff0c;通常被…简介
GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型其主要思想是利用弱分类器决策树迭代训练以得到最优模型该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛通常被用于多分类、点击率预测、搜索排序等任务。而LightGBMLight Gradient Boosting Machine是一个实现GBDT算法的框架支持高效率的并行训练并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。
提出的动机
常用的机器学习算法例如神经网络等算法都可以以mini-batch的方式训练训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小如果不装进内存反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据普通的GBDT算法是不能满足其需求的。
LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题让GBDT可以更好更快地用于工业实践。
XGBoost的缺点
在LightGBM提出之前最有名的GBDT工具就是XGBoost了它是基于预排序方法的决策树算法。这种构建决策树的算法基本思想是首先对所有特征都按照特征的数值进行预排序。其次在遍历分割点的时候寻找一个特征上的最好分割点。最后在找到一个特征的最好分割点后将数据分裂成左右子节点。
这样的预排序算法的优点是能精确地找到分割点。但是缺点也很明显首先空间消耗大。这样的算法需要保存数据的特征值还保存了特征排序的结果例如为了后续快速的计算分割点保存了排序后的索引这就需要消耗训练数据两倍的内存。其次时间上也有较大的开销在遍历每一个分割点的时候都需要进行分裂增益的计算消耗的代价大。最后对cache优化不友好。在预排序后特征对梯度的访问是一种随机访问并且不同的特征访问的顺序不一样无法对cache进行优化。同时在每一层长树的时候需要随机访问一个行索引到叶子索引的数组并且不同特征访问的顺序也不一样也会造成较大的cache miss。
LightGBM的优化
为了避免上述XGBoost的缺陷并且能够在不损害准确率的条件下加快GBDT模型的训练速度lightGBM在传统的GBDT算法上进行了如下优化
基于Histogram(直方图)的决策树算法。单边梯度采样 Gradient-based One-Side Sampling(GOSS)使用GOSS可以减少大量只具有小梯度的数据实例这样在计算信息增益的时候只利用剩下的具有高梯度的数据就可以了相比XGBoost遍历所有特征值节省了不少时间和空间上的开销。互斥特征捆绑 Exclusive Feature Bundling(EFB)使用EFB可以将许多互斥的特征绑定为一个特征这样达到了降维的目的。带深度限制的Leaf-wise的叶子生长策略大多数GBDT工具使用低效的按层生长 (level-wise) 的决策树生长策略因为它不加区分的对待同一层的叶子带来了很多没必要的开销。实际上很多叶子的分裂增益较低没必要进行搜索和分裂。LightGBM使用了带有深度限制的按叶子生长 (leaf-wise) 算法。直接支持类别特征(Categorical Feature)支持高效并行Cache命中率优化
LGBM原理
1、基于Histogram的决策树算法 1直方图算法
Histogram algorithm应该翻译为直方图算法直方图算法的基本思想是先把连续的浮点特征值离散化成data个整数同时构造一个宽度为bins的直方图。在遍历数据的时候根据离散化后的值作为索引在直方图中累积统计量当遍历一次数据后直方图累积了需要的统计量然后根据直方图的离散值遍历寻找最优的分割点。 直方图算法简单理解为首先确定对于每一个特征需要多少个箱子bin并为每一个箱子分配一个整数然后将浮点数的范围均分成若干区间区间个数与箱子个数相等将属于该箱子的样本数据更新为箱子的值最后用直方图#bins表示。看起来很高大上其实就是直方图统计将大规模的数据放在了直方图中。