# 高级算法梳理-Task4
## LightGBM梳理
#### 1、LightGBM
LightGBM是个**快速、分布式的、高性能的基于决策树算法的梯度提升框架**。可用于排序、分类、回归以及很多其他的机器学习任务中。
因为他是基于决策树算法的,它采用最优的leaf-wise策略分裂叶子节点,然而其它的提升算法分裂树一般采用的是level-wise。因此,在LightGBM算法中,当增长到相同的叶子节点,leaf-wise算法比level-wise算法减少更多的loss,因此导致更高的精度。与此同时,它的速度也让人感到震惊,这就是该算法名字Light的原因。
#### 2、LightGBM的起源
LGB是一种GBDT的工程实现。常见的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次,如果把整个训练数据装进内存会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。
LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。
#### 3、Histogram VS pre-sorted(如何寻找最优切分点)
**Pre-sorted:**
之前的GBDT工具都是基于预排序(pre-sorted)的方法(如 xgboost)。这种构造决策树的算法基本思想是:
首先,对所有特征都按照特征的数值进行预排序。
其次,在遍历分割点的时候用O(#data)的代价找到一个特征上的最好分割点。
最后,找到一个特征的分割点后,将数据分裂成左右子节点。
优点:能精确地找到分割点;缺点:空间消耗大,时间开销也大,对cache优化不友好。
**Histogram:**
直方图算法的基本思想是先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。在遍历数据的时候,根据离