初始化
数据集
D={(xi,yi)} (∣D∣=n,xi∈Rm,yi∈R)
预测模型
包含k棵树的预测模型 y^
y^i=ϕ(xi)=k=1∑Kfk(xi),fk∈F
- F 代表由树构成的函数空间:F={f(x)=wq(x)} (q:Rm→T,w∈RT);
- q 代表x到叶子节点的映射函数;
- w 代表叶子节点的权值。
目标函数
Obj=i=1∑nloss(yi,y^i)+k=1∑KΩ(dk)
其中∑k=1KΩ(dk)为模型的正则项,控制着模型的复杂度:
Ω(dt)=γT+21λj=1∑Twj2
- T 代表叶子节点数目;
- λ 代表叶子的正则系数。
二阶泰勒展开损失函数
对损失函数进行二阶泰勒展开
L(t)⋍i=1∑n[l(yi,y^t−1)+gift(xi)+21hift2(xi)]+Ω(ft)
其中gi和hi分别为损失函数的一阶导数和二阶导数。
gi=∂y^t−1∂l(yi,y^t−1)
hi=∂(y^t−1)2∂2l(yi,y^t−1)
移除常数项后的损失函数为:
L(t)=i=1∑n[gift(xi)+21hift2(xi)]+γT+21λj=1∑Twj2
定义叶子节点映射集合:
Ij={i∣q(xi)=j}
整理损失函数:
L(t)=j=1∑T[(i∈Ij∑gi)wj+21(i∈Ij∑hi+λ)wj2]+γT
最小化对损失函数
将损失函数L(t)对wj进行求导
∂wj∂L(t)=i∈Ij∑gi+(i∈Ij∑hi+λ)wj
令导数等于0,求得wj∗使损失函数最小的最优参数
wj∗=−∑i∈Ijhi+λ∑i∈Ijgi
带入损失函数,得到在树为q的情况下损失函数最优值
L(t)(q)=−21j=1∑T∑i∈Ijhi+λ(∑i∈Ijgi)2+γT
分裂节点
设
GjHj=i∈Ij∑gi=i∈Ij∑hi
则L(t)(q)可简化为:
Obj=−21j=1∑THj+λGj2+γT
在某个节点j下的分裂前和分裂后的函数:
Obj分裂前=−21HL+HR+λ(GL+GR)2−γT分裂前
Obj分裂后=−21[HL+λGL2+HR+λGR2]−γT分裂后
最后的信息增益:
Gain=HL+λGL2+HR+λGR2−HL+HR+λ(GL+GR)2−γ