XGBoost算法
-
XGBoost本质上还是一个GBDT,但是力争把速度和效率发挥到极致,所以叫X (Extreme) GBoosted
-
XGBoost是一个优化的分布式梯度增强库,提供了并行树提升(也称为GBDT,GBM),可使用分布式环境(Hadoop,SGE,MPI)运行;以CART决策树为子模型,通过Gradient Tree Boosting实现多棵CART树的集成学习,得到最终模型
XGBoost算法
(1) 构造目标函数:
L(ϕ)=∑il(y^i,yi)+∑kΩ(fk) \mathcal{L}(\phi)=\sum_{i} l\left(\hat{y}_{i}, y_{i}\right)+\sum_{k} \Omega\left(f_{k}\right) L(ϕ)=i∑l(y^i,yi)+k∑Ω(fk)
其中,∑il(y^i,yi)\sum_{i} l\left(\hat{y}_{i}, y_{i}\right)∑il(y^i,yi)为loss function,∑kΩ(fk)\sum_{k} \Omega\left(f_{k}\right)∑kΩ(fk)为正则化项。
(2) 叠加式的训练(Additive Training):
因此,目标函数可以分解为:
L(K)=∑i=1nl(yi,y^i(K−1)+fK(xi))+∑kΩ(fk) \mathcal{L}^{(K)}=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(K-1)}+f_{K}\left(\mathrm{x}_{i}\right)\right)+\sum_{k} \Omega\left(f_{k}\right) L(K)=i=1∑nl(yi,y^i(K−1)+fK(xi))+k∑Ω(fk)
也为:
(3) 使用泰勒级数近似目标函数:
(4) 如何定义一棵树:
第一个概念是样本所在的节点位置q(x)q(x)q(x),
第二个概念是有哪些样本落在节点j上Ij={ i∣q(xi)=j}I_{j}=\left\{i \mid q\left(\mathbf{x}_{i}\right)=j\right\}Ij={ i∣q(xi)=j},
第三个概念是每个结点的预测值wq(x)w_{q(x)}wq(x),
第四个概念是模型复杂度Ω(fK)\Omega\left(f_{K}\right)Ω(fK),它可以由叶子节点的个数以及节点函数值来构建,则:Ω(fK)=γT+12λ∑j=1Twj2\Omega\left(f_{K}\right) = \gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2}Ω(fK)=γT+21λ∑j=1Twj2。如下图的例子:
q(x1)=1,q(x2)=3,q(x3)=1,q(x4)=2,q(x5)=3q(x_1) = 1,q(x_2) = 3,q(x_3) = 1,q(x_4) = 2,q(x_5) = 3q(x1)=1,q(x2)=3,q(x3)=1,q(x4)=2,q(x5)=3,I1={
1,3},I2={
4},I3={
2,5}I_1 = \{1,3\},I_2 = \{4\},I_3 = \{2,5\}I1={
1,3},I2={
4},I3={
2,5},w=(15,12,20)w = (15,12,20)w=(15,12,20)
因此,目标函数用以上符号替代后:
L~(K)=∑i=1n[gifK(xi)+12hifK2(xi)]+γT+12λ∑j=1Twj2=∑j=1T[(∑i∈Ijgi)wj+12(∑i∈Ijhi+λ)wj2]+γT \begin{aligned} \tilde{\mathcal{L}}^{(K)} &=\sum_{i=1}^{n}\left[g_{i} f_{K}\left(\mathrm{x}_{i}\right)+\frac{1}{2} h_{i} f_{K}^{2}\left(\mathrm{x}_{i}\right)\right]+\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2} \\ &=\sum_{j=1}^{T}\left[\left(\sum_{i \in I_{j}} g_{i}\right) w_{j}+\frac{1}{2}\left(\sum_{i \in I_{j}} h_{i}+\lambda\right) w_{j}^{2}\right]+\gamma T \end{aligned} L~(K)