XGBoost、lightGBM

1. 文章

《XGBoost: A Scalable Tree Boosting System》

Tianqi Chen 等, 单位:University of Washington, KDD2016

《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》

Guolin Ke 等, 单位:Microsoft, NIPS2017

2. Bagging

Bagging 通过 集成 的方式来 提高模型的稳定性。好比买股票倾向多买几只不同的股票来降低风险。

2.1 随机森林

随机森林 是 Bagging 最经典的一个模型种类。随机森林通过多棵决策树共同做决策。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Bagging 的流程

2.2 Bagging vs Boosting

Bagging:Leverages unstable base learners that are weak because of overfitting.

Boosting:Leverages stable base learners that are weak because of underfitting.

2.3 提升树

  给定一个预测问题,已经在此数据上训练出了一个模型- Model1,但效果不好,误差比较大。问题:如果只能接受去使用这个模型-Model1,但不能做任何改变,接下来如何去做?

基于残差的训练

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3. Boosting

XGBoost 优点:

  • 算法可以并行,训练效率高
  • 比起其他的算法,实际效果好
  • 由于可控参数多,可以灵活调整

学习路径
在这里插入图片描述

3.1 目标函数构建

  假设已经训练好了 K 棵树,则对于第 i i i 个样本的(最终)预测值为:
y ^ i = ∑ k = 1 K f k ( x i ) , f k ∈ F \widehat{y}_{i}=\sum_{k=1}^{K} f_{k}\left(x_{i}\right), f_{k} \in \mathcal{F} y i=k=1Kfk(xi),fkF

  目标函数
在这里插入图片描述
y i y_i yi:真实值, y i ^ \hat{y_i} yi^:预测值; Ω ( ) \Omega() Ω():相当于惩罚项,正则化。

3.1.1 叠加式训练 Additive Training

在这里插入图片描述
  给定一个样本 x i x_i xi,假定第0 棵树的预测值 y i ^ ( 0 ) {\hat{y_i}}^{(0)} yi^(0),作为 Default case, y i ^ ( 0 ) = 0 {\hat{y_i}}^{(0)}=0 yi^(0)=0,有

y ^ i ( 0 ) = 0 ←  Default case y ^ i ( 1 ) = f 1 ( x i ) = y ^ i ( 0 ) + f 1 ( x i ) y ^ i ( 2 ) = f 1 ( x i ) + f 2 ( x i ) = y ^ i ( 1 ) + f 2 ( x i ) ⋮ y ^ i ( k ) = f 1 ( x i ) + f 2 ( x i ) ⋯ + f k ( x i ) = ∑ i = 1 K f k ( x i ) = y ^ i ( k − 1 ) + f k ( x i ) (1) \begin{aligned} &\hat{y}_{i}^{(0)}=0 \leftarrow \text { Default case} \\ &\hat{y}_{i}^{(1)}=f_{1}\left(x_{i}\right)=\hat{y}_{i}^{(0)}+f_{1}\left(x_{i}\right) \\ &\hat{y}_{i}^{(2)}=f_{1}\left(x_{i}\right)+f_{2}\left(x_{i}\right)=\hat{y}_{i}^{(1)}+f_{2}\left(x_{i}\right) \\ &\qquad \vdots \\ &\hat{y}_{i}^{(k)}=f_{1}\left(x_{i}\right)+f_{2}\left(x_{i}\right)\cdots+f_{k}\left(x_{i}\right)=\sum_{i=1}^Kf_k(x_i)=\hat{y}_{i}^{(k-1)}+f_{k}\left(x_{i}\right) \tag{1} \end{aligned} y^i(0)=0 Default casey^i(1)=f1(xi)=y^i(0)+f1(xi)y^i(2)=f1(xi)+f2(xi)=y^i(1)+f2(xi)y^i(k)=f1(xi)+f2(xi)+fk(xi)=i=1Kfk(xi)=y^i(k1)+fk(xi)(1)

已知前 k − 1 k-1 k1 棵树的预测值 y ^ i ( k − 1 ) \hat{y}_{i}^{(k-1)} y^i(k1),训练第 k k k 棵树。

  损失函数记为 l ( y , y i ^ ) l(y,\hat{y_i}) l(y,yi^),共有 n n n 个样本 ( x i , i = 1... n ) (x_i, i=1...n) (xi,i=1...n),共 K K K棵树。

O b j = ∑ i = 1 n l ( y i , y ^ i ( k ) ) + ∑ k = 1 K Ω ( f k ) = ∑ i = 1 n l ( y i , y ^ i ( k − 1 ) + f k ( x i ) ) + ∑ k = 1 K Ω ( f k ) + Ω ( f k ) = ∑ i = 1 n l ( y i , y ^ i ( k − 1 ) + f k ( x i ) ) + Ω ( f k ) (2) \begin{aligned} O b j &=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(k)}\right)+\sum_{k=1}^{K} \Omega\left(f_{k}\right) \\ &=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(k-1)}+f_{k}(x_i)\right)+\sum_{k=1}^{K} \Omega\left(f_{k}\right)+\Omega(f_k) \\ &=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(k-1)}+f_{k}(x_i)\right)+\Omega(f_k) \tag{2} \end{aligned} Obj=i=1nl(yi,y^i(k))+k=1KΩ(fk)=i=1nl(yi,y^i(k1)+fk(xi))+k=1KΩ(fk)+Ω(fk)=i=1nl(yi,y^i(k1)+fk(xi))+Ω(fk)(2)

  当训练第 k k k 棵树时,前 k − 1 k-1 k1 棵树已经训练好了, ∑ k = 1 K Ω ( f k ) \sum_{k=1}^{K} \Omega\left(f_{k}\right) k=1KΩ(fk)可看成常数项(省略), y ^ i ( k − 1 ) \hat{y}_{i}^{(k-1)} y^i(k1)也可看成常数项,但保留。 y i y_i yi为真实值, f k ( x i ) f_k(x_i) fk(xi)为第 k k k棵树的预测值, Ω ( f k ) \Omega(f_k) Ω(fk)为第 k k k棵树的复杂度,目标是对 o b j obj obj 进行 最小化

3.2 使用泰勒级数近似目标函数

  如果 f ( x ) f(x) f(x) 在点 x = x 0 x=x_0 x=x0 具有任意阶导数,则幂级数
∑ n = 0 ∞ f ( n ) ( x 0 ) n ! ( x − x 0 ) n = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + ⋯ + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + ⋯ \sum_{n=0}^{\infty} \frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}=f\left(x_{0}\right)+f^{\prime}\left(x_{0}\right)\left(x-x_{0}\right)+\frac{f^{\prime \prime}\left(x_{0}\right)}{2 !}\left(x-x_{0}\right)^{2}+\cdots+\frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}+\cdots n=0n!f(n)(x0)(xx0)n=f(x0)+f(x0)(xx0)+2!f(x0)(xx0)2++n!f(n)(x0)(xx0)n+

称为 f ( x ) f(x) f(x)在点 x 0 x_0 x0处的 泰勒级数

目标函数
o b j k = ∑ i = 1 n l ( y i , y ^ i ( k − 1 ) + f k ( x i ) ) + Ω ( f k ) ⇒ f ( x + Δ x ) ≈ f ( x ) + f ′ ( x ) ⋅ Δ x + 1 2 f ′ ′ ( x ) ⋅ Δ x 2 T a y l o r E x p a n s i o n ⇒ 令 x = y ^ i ( k − 1 ) , Δ x = f k ( x i ) f ( x ) = l ( y i , y ^ i ( k − 1 ) ) , f ( x + Δ x ) = l ( y i , y ^ i ( k − 1 ) + f k ( x i ) ) (3) \begin{aligned} &o b j_{k}=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(k-1)}+f_{k}\left(x_{i}\right)\right)+\Omega\left(f_{k}\right) \\ &\quad\Rightarrow f(x+\Delta x) \approx f(x)+f^{\prime}(x) \cdot \Delta x+\frac{1}{2} f^{\prime \prime}(x) \cdot \Delta x^{2} \quad Taylor Expansion \\ &\quad\Rightarrow 令 \quad x = \hat{y}_{i}^{(k-1)}, \qquad\Delta x = f_{k}(x_i) \\ &f(x)=l\left(y_{i}, \hat{y}_{i}^{(k-1)}\right), \qquad f(x+\Delta x)=l\left(y_{i}, \hat{y}_{i}^{(k-1)}+f_{k}(x_i)\right) \tag{3} \end{aligned} objk=i=1nl(yi,y^i(k1)+fk(xi))+Ω(fk)f(x+Δx)f(x)+f(x)Δx+21f(x)Δx2TaylorExpansionx=y^i(k1),Δx=fk(xi)f(x)=l(yi,y^i(k1)),f(x+Δx)=l(yi,y^i(k1)+fk(xi))(3)

o b j k = ∑ i = 1 n l ( y i , y ^ i ( k − 1 ) + f k ( x i ) ) + Ω ( f k ) = ∑ i = 1 n [ l ( y i , y i ^ ( k − 1 ) ) ‾ + ∂ y i ^ ( x − 1 ) l ( y i , y i ^ ( x − 1 ) ) ‾ ⋅ f k ( x i ) + 1 2 ∂ y ^ i ( x − 1 ) 2 l ( y i , y ^ i ( x − 1 ) ) ‾ ⋅ f k 2 ( x i ) ] + Ω   ( f k ) = ∑ i = 1 n [ l ( y i , y i ^ ( k − 1 ) ) ‾ + g i ‾ ⋅ f k ( x i ) + 1 2 h i ‾ ⋅ f k 2 ( x i ) ] + Ω   ( f k ) (4) \begin{aligned} o b j_{k}&=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(k-1)}+f_{k}\left(x_{i}\right)\right)+\Omega\left(f_{k}\right) \\ &=\sum_{i=1}^{n}\left[ \underline{l\left(y_i, \hat{y_i}^{(k-1)}\right)} + \underline{\partial_{\hat{y_{i}}^{(x-1)}} l\left(y_{i}, \hat{y_{i}}^{(x-1)}\right)} \cdot f_{k}(x_i) + \frac{1}{2} \underline{ \partial_{\hat{y}_{i}^{(x-1)}}^{2} l\left(y_{i}, \hat{y}_{i}^{(x-1)}\right)} \cdot f_{k}^{2}\left(x_i\right) \right] +\Omega\ (f_{k}) \\ &=\sum_{i=1}^{n} \left[ \underline{l\left(y_i, \hat{y_i}^{(k-1)}\right)} + \underline{ g_i} \cdot f_{k}(x_i) + \frac{1}{2} \underline{h_i} \cdot f_{k}^{2}\left(x_i\right) \right] +\Omega\ (f_{k}) \\ \tag{4} \end{aligned} objk=i=1nl(yi,y^i(k1)+fk(xi))+Ω(fk)=i=1n[l(yi,yi^(k1))+yi^(x1)l(yi,yi^(x1))fk(xi)+21y^i(x1)2l(yi,y^i(x1))fk2(xi)]+Ω (fk)=i=1n[l(yi,yi^(k1))+gifk(xi)+21hifk2(xi)]+Ω (fk)(4)

  当训练第 k k k 棵树时,目标函数 m i n ( ∑ i = 1 n [ g i ⋅ f k ( x i ) + 1 2 h i ⋅ f k 2 ( x i ) ] + Ω   ( f k ) ) min\left(\sum_{i=1}^{n} \left[ g_i \cdot f_{k}(x_i) + \frac{1}{2} h_i \cdot f_{k}^{2}\left(x_i\right) \right] +\Omega\ (f_{k}) \right) min(i=1n[gifk(xi)+21hifk2(xi)]+Ω (fk)) h i , g i {h_i, g_i} hi,gi 是已知的, l ( y i , y i ^ ( k − 1 ) ) l\left(y_i, \hat{y_i}^{(k-1)}\right) l(yi,yi^(k1))为常数,省略。

3.3 树结构的参数化

在这里插入图片描述

  对上面树结构进行简要的变换,
g i ⋅ f k ( x i ) = g i ⋅ w q ( x i ) = g 1 ⋅ w q ( x 1 ) + g 3 ⋅ w q ( x 3 ) + g 4 ⋅ w q ( x 4 ) + g 2 ⋅ w q ( x 2 ) + g 5 ⋅ w q ( x 5 ) = ( g 1 + g 3 ) ⋅ w 1 + g 4 ⋅ w 2 + ( g 2 + g 5 ) ⋅ w 3 = ∑ i ∈ I 1 g i ⋅ w 1 + ∑ i ∈ I 2 g i ⋅ w 2 + ∑ i ∈ I 3 g i ⋅ w 3 (5) \begin{aligned} g_i \cdot f_{k}(x_i)&=g_i \cdot w_{q}(x_i) \\ &=g_1\cdot w_{q}(x_1) +g_3\cdot w_{q}(x_3)+g_4\cdot w_{q}(x_4)+g_2\cdot w_{q}(x_2)+g_5\cdot w_{q}(x_5) \\ &=(g_1+g_3) \cdot w_1+g_4\cdot w_2+(g_2+g_5)\cdot w_3 \\ &=\sum_{i \in {I_1}}g_i \cdot w_1 + \sum_{i \in {I_2}}g_i \cdot w_2 + \sum_{i \in {I_3}}g_i \cdot w_3 \tag{5} \end{aligned} gifk(xi)=giwq(xi)=g1wq(x1)+g3wq(x3)+g4wq(x4)+g2wq(x2)+g5wq(x5)=(g1+g3)w1+g4w2+(g2+g5)w3=iI1giw1+iI2giw2+iI3giw3(5)

新的目标函数
∑ i = 1 n [ g i ⋅ f k ( x i ) + 1 2 h i ⋅ f k 2 ( x i ) ] + Ω   ( f k ) = ∑ i = 1 n [ g i ⋅ f k ( x i ) + 1 2 h i ⋅ f k 2 ( x i ) ] + γ T + 1 2 λ ∑ j = 1 T w j 2 = ∑ j = 1 T [ ∑ i ∈ I j g i ‾ ⋅ w j + 1 2 ( ∑ i ∈ I j h i ‾ + λ ) ⋅ w j 2 ] + γ T 常 数 替 换 ‾ = ∑ j = 1 T [ G j ⋅ w j + 1 2 ( H j + λ ) ⋅ w j 2 ] + γ T ⇒ ∼ b w j + 1 2 a w j 2 + c ∼ a x 2 + b x + c ⇒ x = − b 2 a 取 最 值 ⇒ w j = − G j H j + λ 代 入 = ∑ j = 1 T ( − G j 2 H j + λ + 1 2 G j 2 H j + λ ) + γ T = − 1 2 ∑ j = 1 T ( G j 2 H j + λ ) + γ T (6) \begin{aligned} &\sum_{i=1}^{n} \left[ g_i \cdot f_{k}(x_i) + \frac{1}{2} h_i \cdot f_{k}^{2}\left(x_i\right) \right] +\Omega\ (f_{k}) \\ =&\sum_{i=1}^{n} \left[ g_i \cdot f_{k}(x_i) + \frac{1}{2} h_i \cdot f_{k}^{2}\left(x_i\right) \right] +\gamma T+\frac{1}{2}\lambda \sum_{j=1}^T w_j^2 \\ =&\sum_{j=1}^{T} \left[ \underline{\sum_{i \in {I_j}}g_i }\cdot w_j + \frac{1}{2} \left( \underline{\sum_{i \in {I_j}} h_i}+\lambda \right) \cdot w_j^2 \right] +\gamma T \qquad \underline{常数替换} \\ =&\sum_{j=1}^{T} \left[ G_j\cdot w_j + \frac{1}{2} (H_j +\lambda) \cdot w_j^2 \right] +\gamma T \\ \Rightarrow& \quad \sim \quad bw_j+\frac{1}{2} aw_j^2+c \quad \sim \quad ax^2+bx+c \quad\Rightarrow x=-\frac{b}{2a}取最值 \\ \Rightarrow& \quad w_j = -\frac{G_j}{H_j+\lambda} \qquad 代入 \\ =&\sum_{j=1}^{T}\left(-\frac{G_{j}^{2}}{H_{j}+\lambda}+\frac{1}{2} \frac{G_{j}^{2}}{H_{j}+\lambda}\right)+\gamma T \\ =& -\frac{1}{2} \sum_{j=1}^{T}\left(\frac{G_{j}^{2}}{H_{j}+\lambda}\right)+\gamma T \tag{6} \end{aligned} =====i=1n[gifk(xi)+21hifk2(xi)]+Ω (fk)i=1n[gifk(xi)+21hifk2(xi)]+γT+21λj=1Twj2j=1TiIjgiwj+21iIjhi+λwj2+γTj=1T[Gjwj+21(Hj+λ)wj2]+γTbwj+21awj2+cax2+bx+cx=2abwj=Hj+λGjj=1T(Hj+λGj2+21Hj+λGj2)+γT21j=1T(Hj+λGj2)+γT(6)

计算目标函数例子

在这里插入图片描述
o b j = − 1 2 ∑ j = 1 T ( G j 2 H j + λ ) + γ T o b j o l d = − 1 2 [ ( g 1 + g 3 + g 4 ) 2 h 1 + h 3 + h 4 + λ + ( g 2 + g 5 ) 2 h 2 + h 5 + λ ] + γ ⋅ 2 o b j n e w = − 1 2 [ ( g 1 + g 3 ) 2 h 1 + h 3 + λ + g 4 2 h 4 + λ + ( g 2 + g 5 ) 2 h 2 + h 5 + λ ] + γ ⋅ 3 m a x ( o b j o l d − o b j n e w ) = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] − γ ⇒ G L = g 1 + g 3 , G R = g 4 , H L = h 1 + h 3 , H R = h 4 (7) \begin{aligned} &obj = -\frac{1}{2} \sum_{j=1}^{T}\left(\frac{G_{j}^{2}}{H_{j}+\lambda}\right)+\gamma T \\ &obj_{old} = -\frac{1}{2} \left[ \frac{(g_1+g_3+g_4)^2}{h_1+h_3+h_4+\lambda} + \frac{(g_2+g_5)^2}{h_2+h_5+\lambda}\right] +\gamma \cdot 2 \\ &obj_{new} = -\frac{1}{2} \left[ \frac{(g_1+g_3)^2}{h_1+h_3+\lambda} +\frac{g_4^2}{h_4+\lambda} + \frac{(g_2+g_5)^2}{h_2+h_5+\lambda}\right] +\gamma \cdot 3 \\ &max(obj_{old}-obj_{new}) =\frac{1}{2}\left[\frac{G_{L}^{2}}{H_{L}+\lambda}+\frac{G_{R}^{2}}{H_{R}+\lambda}-\frac{\left(G_{L}+G_{R}\right)^{2}}{H_{L}+H_{R}+\lambda}\right]-\gamma \\ &\Rightarrow \quad G_L=g_1+g_3, \quad G_R=g_4, \quad H_L=h_1+h_3,\quad H_R=h_4 \tag{7} \end{aligned} obj=21j=1T(Hj+λGj2)+γTobjold=21[h1+h3+h4+λ(g1+g3+g4)2+h2+h5+λ(g2+g5)2]+γ2objnew=21[h1+h3+λ(g1+g3)2+h4+λg42+h2+h5+λ(g2+g5)2]+γ3max(objoldobjnew)=21[HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2]γGL=g1+g3,GR=g4,HL=h1+h3,HR=h4(7)

3.3.1 学习策略-确定树结构

  采用贪心算法,每次尝试分裂一个叶节点,计算分裂后的增益,选择增益最大的。类似于在ID3中的信息增益,和CART树中的基尼指数XGBoost中损失函数如上图中obj所示。

  其中红色部分衡量了叶子节点对总体损失的贡献,目标函数越小越好,则红色部分越大越好,在XGBoost增益计算方式如上图中Gain所示,Gain值越大,说明分裂后能使目标函数减小的越多,也就是越好。

4. LightGBM

参考链接 - 网易云课堂 - 唐国梁Tommy - 最牛机器学习算法 lightGBM

4.1 XGBoost

核心思想: 1️⃣首先对所有都按照特征的数值进行预排序,2️⃣ 其次在遍历分割点的时候用O(#Data)的代价找到一个特征上的最好分割点,3️⃣ 最后在找到一个特征的最好分割点后,将数据分裂成左右子节点。

优缺点优点:能精确的找到分割点。缺点: 空间消耗大;1️⃣算法需要保存数据的特征值,还保存了特征排序的结果,2️⃣ 在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。

4.2 lightGBM 算法核心

4.2.1 基于Histogram的决策树算法

原理:将连续的浮点特征离散成 k 个整数,并构造宽度为 k 的 Histogram,然后遍历训练数据,统计每个离散值在直方图中的累计统计量。在进行特征选择时,只需要根据直方图的离散值,遍历寻找最优的分割点。
在这里插入图片描述

优点: 1️⃣占用内存更低,数据分隔的复杂度更低, 2️⃣ 用8位整型存储,内存消耗为原来的 1 8 \frac{1}{8} 81,3️⃣ 时间上的开销由原来的O(data * #features)降到O(k * #features)

4.2.2 直方图做差加速

原理:1️⃣一个叶子节点的Histogram可以直接由父节点的Histogram和兄弟节点的Histogram做差得到。

在这里插入图片描述
  2️⃣ 通常构造直方图,需要遍历该叶子上的所有数据,但直方图做差仅需遍历直方图的K个桶。

4.2.3 带深度限制的 Leaf-wise 的叶子生长策略

原理:每次从当前所有叶子中找到分裂增益最大(一般也是数据量最大)的一个叶子,然后分裂、如此循环。

在这里插入图片描述
优缺点优点:level-wise相比,在分裂次数相同的情况下,leaf-wise可以降低更多的误差,得到更好的精度缺点: 可能会长出比较深的决策树,产生过拟合

4.2.4 单边梯度采样 Gradient-based One-Side Sampling(GOSS)

原理GOSS算法从减少样本的角度出发,排除大部分小梯度的样本,仅用剩下的样本计算信息增益,它是一种在减少数据量和保证精度上平衡的算法。

算法流程:1️⃣GOSS首先将要进行 分裂的特征 的所有取值按照 绝对值大小降序排序XGBoost 一样也进行了排序,但是lightGBM不用保存排序后的结果),选取绝对值最大的 a ∗ 100 % a * 100\% a100%个数据。

2️⃣ 然后在剩下的较小梯度数据中随机选择 b ∗ 100 % b * 100\% b100%个数据。

3️⃣ 接着将这 b ∗ 100 % b * 100\% b100%个数据乘以一个常数 1 − a b \frac{1-a}{b} b1a,这样算法就会更关注训练不足的样本,而不会过多改变原数据集的分布。

4️⃣ 最后使用这 ( a + b ) ∗ 100 % (a+b)*100\% (a+b)100% 个数据来计算信息增益。

4.2.5 互斥特征捆绑 Exclusive Feature Bunding (EFB)

背景:高纬度的数据往往是稀疏的,这种稀疏性启发我们设计一种无损 的方法来减少特征的维度。

算法步骤:① 将特征按照非零值的个数进行排序,② 计算不同特征之间的冲突比率,③ 遍历每个特征并尝试合并特征、使冲突比率最小化。

时间复杂度:直方图时间复杂度从O(data * #features)降到O(k * #bundle),由于 # b u d d l e < < # f e a t u r e \#buddle << \#feature #buddle<<#feature,能够极大地加速 GBDT的训练过程而且未损失精度。

优点EFB算法能够将许多互斥 的特征变为低维稠密 的特征,就能够有效的避免不必要 0 值特征的计算。

4.2.6 支持类别特征 (Categorical Feature)

原理lightGBM采用了many vs many的切分方法,实现了类别特征的最优切分。

算法流程:1️⃣在枚举分割点之前,先把直方图按每个类别的label均值进行排序,2️⃣ 按照排序的结果依次枚举最优分割点。

在这里插入图片描述

4.2.7 多线程优化

lightGBM 原生支持并行学习,目前支持 特征并行数据并行投票并行

特征并行,原理:不同机器在不同特征集合上分别寻找最优的分割点,然后在机器间同步最优的分割点。
在这里插入图片描述  3台机器,6个特征;1和2特征→1号机器… 分别找最优特征,再进行整合。
lightGBM 不进行数据垂直划分,而是在每台机器上保持全部的训练数据,在得到最佳划分方案后可在本地执行划分而减少了不必要的通信。

数据并行lightGBM在数据并行中使用分散规约(Reduce scatter) 把直方图合并的任务分摊到不同的机器,降低通信和计算,并利用直方图做差,进一步减少了一半的通信量。

在这里插入图片描述
投票并行:基于投票的数据并行则进一步优化数据并行中的通信代价,使通信代价变成常数级。

在这里插入图片描述
算法流程:1️⃣本地找出top K 特征,并基于投票筛选出可能是最优分割点的特征;2️⃣ 合并时至合并每个机器选出来的特征。

4.3 lightGBM 优缺点

优点:速度快

  1️⃣lightGBM采用了histogram算法将遍历样本转为遍历直方图,极大的降低了时间复杂度;

  2️⃣lightGBM在训练过程中采用单边梯度算法过滤掉梯度小的样本,减少了大量的计算;

  3️⃣lightGBM采用了基于leaf-wise算法的增长策略构建树,减少了很多不必要的计算量

  4️⃣lightGBM采用优化后的 特征并行、数据并行方法加速计算,当数据量非常大的时候还可以采用投票并行的策略。

  5️⃣lightGBM缓存也进行了优化,增加了缓存命中率。

优点:内存更小

  1️⃣XGBoost使用 预排序 后需要记录特征值及其对应样本的统计值的索引,而 lightGBM使用了直方图算法将特征值变为bin值,而不需要记录特征到样本的索引,将空间复杂度从 O ( 2 ∗ # d a t a ) O(2* \#data) O(2#data)降低为 O ( # b i n ) O(\#bin) O(#bin),极大的减少了内存消耗;

  2️⃣ lightGBM在训练过程中采用互斥特征捆绑算法减少了特征数量,降低了内存消耗。

缺点

  1️⃣ 可能会长出比较深的决策树,产生过拟合。因此lightGBMleaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合。

  2️⃣ Boosting是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行权重调整,所以随着迭代不断进行,误差会越来越小,模型的偏差(bias)会不断降低。由于 lightGBM 是基于偏差的算法,所以对噪声点较为敏感;

  3️⃣ 在寻找最优解时,依据的是最优切分变量,没有将最优解时全部特征的综合这一理念考虑进去。


参考链接 - 黄海广 - 机器学习课程-温州大学-08集成学习
参考链接 - 贪心科技
参考链接 - 贪心学院 - XGBoost的技术剖析
参考链接 - 微信公众号 - Abela的后花园 - 集成学习详解(XGBoost & lightBGM)
参考链接 - 网易云课堂 - 唐国梁Tommy - 最牛机器学习算法 lightGBM
参考链接 - 知乎 - Microstrong - 深入理解LightGBM

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值