xgboost理论推导(一)

 本文是在学习陈天奇博士的xgboost论文后总结而来,并对相关知识点和公式进行了详细说明,推导和理解。内容安排如下:

顺序 内容 说明
1 树的复杂度衡量 因为xgboost的损失函数包含了正则项,而正则项则是依据树的复杂度进行的,所以先介绍树的复杂度
2 xgboost的损失函数 中间详细介绍了公式的推导过程,并对每个公式进行了详细介绍,方便读者理解。

1,树的复杂度衡量

 这里以陈博士论文中的图像为例,说明树的复杂度衡量公式。

 陈博士论文中的图像如下:
xgboost理论推导(一)

 上图中,是对5个人物(祖孙三代)为例构建决策树实例。首先,根据年龄是否小于15岁进行分类,接着对左支的子集,根据是否为男性进行分类。一共得到三个叶子(leaf),leaf1,leaf2,leaf3。

 使用q,Tw表示树的复杂度。q表示叶子的索引,q:Rd{1,2,,T}Tq的最大值,是叶子的总数。示例中,T为3。q()=1q()=3w是叶子的权重,也称得分。在示例中,小男孩所在的叶子1的权重为w1=+2 。决策树的最终目的就是得到这个权重。

2,xgboost的损失函数

 xgboost的目标函数为:

(2)L(ϕ)=il(y^i,yi)+kΩ(fk)Ω(f)=γT+12λ||w||2

 上式中,各项的解释如下:

符号 性质 说明
l 损失函数,可微,是一个凸函数。 衡量预测值y^i和精确值yi之间的差别,可以是差别的L1范数或者差别的L2范数
y^i 预测值 l的自变量
yi 精确值 l的自变量
γ T的权重,即正则化的强度 实际使用中可调
T 树的叶子的数量
λ ||w||2的权重,即正则化的强度 实际使用中可调
||w||2 叶子得分的L2范数
Ω 正则化函数 Ω(f)=γT+12λ||w||2

 根据xgboost的原理,树的集成方式是加法模型。即:

(3)y^i(t)=y^i(t1)+ft(Xi)

 公式的中各部分的解释如下:

符号 说明
t,t1 集成树的迭代次数
i 集成树的中,树的编号。
y^i(t1) i个数的第t1次迭代的计算结果,即预测值
ft t次迭代后的集成树模型(可以理解为函数)
Xi i个树的输入变量(自变量)

 公式的整个含义是:

  第t次迭代后集成树的计算结果y^i(t) = 前t1次的累加计算结果y^i(t1)+第t次集成树模型计算结果ft(Xi)

 将公式(3) 带入到公式(2)中,可得:

(4)L(t)=i=1nl(yi,y^i(t1)+ft(Xi))+Ω(ft)

 含义是:第t次迭代的损失函数=n个树的损失函数之和+第t次迭代的集成树的复杂度惩罚


 接着使用泰勒展开式对公式(4)进行化简。

 已知泰勒展开式为:

(5)f(x+Δx)=f(x)+f(x)Δx+f(x)2!(Δx)2++f(n)(x)n!(Δx)n+Rn(x)

 所以,公式(4)可以转化为:
(6)L(t)i=1n[l(yi,y^(t1))+gift(Xi)+12hift2(Xi)]+Ω(ft)

 公式(6)中,
gi=y^(t1)l(yi,y^(t1))hi=y^(t1)2l(yi,y^(t1))

 并且,公式(6)中和公式(5)的对应如下:

公式(6) 公式(5)
l f
y^i(ty1) x
ft(Xi) Δx

 考虑到l(yi,y^(t1))是常量(因为前t1次迭代结果已定,现在处于第t次迭代过程中),所以略去常数项,简化公式(6)如下:

(7)L~(t)=i=1n[gift(Xi)+12hift2(Xi)]+Ω(ft)


 截止到目前,所有的推导的对象都是树,还未深入到树的叶子,不方便实际计算,现在将推导细化到树的叶子。

 定义:Ij={i|q(Xi)=j}是第j个叶子的实例集。这里扩展Ω并将推导细化都树的叶子,重写公式(7)如下:

(8)L~(t)=i=1n[gift(Xi)+12hift2(Xi)]+Ω(ft)=i=1n[gift(Xi)+12hift2(Xi)]+γT+12λ||w||2=j=1T[(iIjgi)wj+12(iIjhi+λ)wj2]+γT

 需要说明的一点是,上式的前提是树的结构是恒定的。上式的含义是先求每个叶子的损失函数,然后将所有叶子的损失函数求和,并使用叶子的数量进行正则惩罚。

 进一步对公式(8)进行化简,定义

Gj=iIjgiHj=iIjhi

 则公式(8)化简为:
(9)L~(t)=j=1T[Gjwj+12(Hj+λ)wj2]+γT

 公式(8)wj求一阶偏导,使之为0。得到L~(t)的极小值点w
(10)wj=iIjgiiIjhi+λ=GjHj+λ

 将w代入公式(8),可得L~(t)的极小值:
(11)L~(t)(q)=12j=1T(iIjgi)2iIjhi+λ+γT=12j=1TGj2Hj+λ+γT

 陈博士论文中,以一颗数为例,说明了公式(11)的计算过程。
xgboost理论推导(一)

 通常,不可能枚举所有可能的树结构q,一个贪婪算法从单一的叶子开始,迭代的添加到树的分支。假设ILIR是拆分后的左和右节点的实例集。假定I=ILIR,在分割后的损失函数降低为:

(12)Lsplit=12[(iILgi)2iILhi+λ+(iIRgi)2iIRhi+λ(iIgi)2iIhi+λ]γ

 这个公式通常用于评估分裂的候选特征。