为什么要建立多棵树
函数空间上的梯度下降
设样本为(xj,yj),j=1,2,⋯,n
对于回归问题,损失函数为
L===∑j=1nl(xj,yj,fj)L(f1,f2,⋯,fj)L(F)
对于二分类问题,损失函数为
L===∑j=1nl(xj,yj,σ(fj))L(f1,f2,⋯,fj)L(F)
F是多维函数(f1,f2,⋯,fj)
目的要求
F=FargminL(F)
根据梯度下降有
F0=F0F1=F0−η∇L∣F=F0⋯Fi=Fi−1−η∇L∣F=Fi−1
所以有
F=F0+ηi=0∑m−∇L∣F=Fi
取每个维度,
fjj===f0j+η∑i=0m−∂fj∂L∣fj=fijf0j+η∑i=0m−∂fj∂l∣fj=fij1,2,⋯,n
把fj看成函数f,即
f=⎩⎪⎪⎨⎪⎪⎧f1,x=x1f2,x=x2⋯fn,x=xn=f(x)
所以
f=f0+ηi=0∑m−∂f∂l∣f=fi
令
T0=f0T1=−∂f∂l∣f=f0⋯Ti=−∂f∂l∣f=fi
则
f=T0+ηT1+⋯+ηTi
T0为初始函数,可以随意定。
对于基分类器Ti,则有
Ti(x)=⎩⎪⎪⎨⎪⎪⎧−∂f∂l∣f=fi1,x=x1−∂f∂l∣f=fi2,x=x2⋯−∂f∂l∣f=fin,x=xn
残差推导
对于回归问题,取平方损失l=(yj−f)2,则有
Ti=−∂f∂l∣f=fi=2(fi−yj)
对于二分类问题,取交叉熵损失l=yjln(σ(f))+(1−yj)ln(1−σ(f)),则有
Ti=−∂f∂l∣f=fi=σ(fi)−yj
建树过程
第一棵树
第一棵树只有一个根节点,即对所有的xj,都有唯一的输出c。
对于回归问题
T0=c=cargmin(L(c))=cargmin(j=1∑nl(xj,yj,c))=cargmin(j=1∑n(c−yj)2)
求导得到
∂c∂L=2j=1∑nc−yj=0
解得
c=n1j=1∑nyj
对于二分类问题
T0=c=cargmin(L(c))=cargmin(j=1∑nl(xj,yj,σ(c)))=cargmin(j=1∑nyjln(σ(c))+(1−yj)ln(1−σ(c)))
求导得到
∂c∂L=j=1∑n(σ(c)−yj)=0
解得
c=σ−1(n1j=1∑nyj)
第i棵树
如何分裂
这里选择CART回归树,对特征排序,遍历分裂点,把样本分为两个组,L和R
G=min(yj∈L∑(yj−c1)2+yj∈R∑(yj−c2)2)
解得
c1=L1yj∈L∑yjc2=R1yj∈R∑yj
取能够使G达到最小的特征及其对应的分裂点
如何取值

对于回归问题
c=cargmin(yj∈R∑l(xj,yj,fij+c))=cargmin(yj∈R∑(fij+c−yj)2)
解得
c=R1yj∈R∑(yj−fij)
对于分类问题
c=cargmin(yj∈R∑l(xj,yj,σ(fij+c)))=cargmin(yj∈R∑yjln(σ(fij+c))+(1−yj)ln(1−σ(fij+c)))
令导数为0
∂c∂L=j∈R∑(yj−σ(fij+c))=0
该函数的导数为
∂c2∂2L=−j∈R∑σ(fij+c)(1−σ(fij+c))<0
函数递减,图像如下

利用牛顿一阶近似求零点,左边直线方程为
y=kx+b
k=∂c2∂2L∣c=0=−j∈R∑σ(fij)(1−σ(fij))b=∂c∂L∣c=0=j∈R∑yj−σ(fij)
所以左边比较靠近c的红色圆圈的点的坐标为
c=−kb=∑j∈Rσ(fij)(1−σ(fij))∑j∈Ryj−σ(fij)