机器学习boosting算法—梯度提升树(GBDT)

1 回归树算法分析

Adaboost算法是提升树的特殊情况,主要用于分类问题,对于回归问题怎么处理呢??

已知一个训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)} ,假设输入空间为 χ ,如果将输入空间划分为J个互不相交的区域 R1,R2,...,RJ 并在每个区域上确定输出的常量 cj ,那么回归树可以表示为:

T(x;Θ)=j=1JcjI(xRj)

其中,参数 Θ={(R1,c1),(R2,c2),...,(RJ,cJ)} 表示树的区域划分和各区域上的常数,J是回归树的叶节点个数


所以回归算法模型可以表示成:
fM(x)=m=1MT(x;Θm)



在前向分布算法的第m步,给定当前模型 fm1(x) ,优化目标为:
Θ̂ m=argminΘmi=1NL(yi,fm1(xi)+T(xi;Θm))



损失函数-平方损失:
L(y,f(x))=(yf(x))2=L(yi,fm1(xi)+T(xi;Θm))=[yfm1(xi)T(xi;Θm)]2=[rT(xi;Θm)]2

其中 r=yfm1(x) 为当前模型拟合的残差,所以回归问题的提升树只需要简单的拟合当前模型的残差。

2 示例解析

训练数据如下,x的取值范围为区间[0.5,10.5],y的取值范围为区间[5.0,10.0],学习这个回归问题的提升树模型,考虑只用树桩作为基函数

xi 1 2 3 4 5 6 7 8 9 10
yi 5.56 5.70 5.91 6.40 6.80 7.05 8.90 8.70 9.00 9.05

寻找切分点方式:

mins[minc1xiR1(yic1)2+minc2xiR2(yic2)2]

其中:
R1=x|xs,R2=x|x>s

其实每个区域内使平方误差达到最小的 c1,c2 就是所有数据点的平均值.

第一步:求解 T1(x)

分别以1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5为分割点可以得到

当以1.5为分割点时, R1=1,R2=2,3,...,10 , c1=5.56,c2=7.50

min1.5=(5.565.56)2+(5.707.50)2+...+(9.057.50)2=15.72

min2.5=12.07min6.5=1.93min9.5=15.74

所以以6.5为切分点时 mins 达到最小值,回归树为:
T1(x)={6.24,x<6.58.91,x6.5

f1(x)=T1(x)

r2i=yif1(xi)

xi 1 2 3 4 5 6 7 8 9 10
yi -0.68 -0.54 -0.33 0.16 0.56 0.81 -0.01 -0.21 0.09 0.14

损失误差为:

L(y,f1(x))=i=110(yif1(xi))2=1.93

循环迭代:
T3(x)={0.15,x<6.50.22,x6.5L(y,f3(x))=0.47

T4(x)={0.16,x<4.50.11,x4.5L(y,f4(x))=0.30

T5(x)={0.01,x<6.50.11,x6.5L(y,f5(x))=0.23

T6(x)={0.15,x<2.50.04,x2.5

f6(x)=T1(x)+T2(x)+...+T6(x)=5.63,x<2.55.82,2.5x<3.56.56,3.5x<4.56.83,4.5x<6.58.95,x6.5

L(y,f6(x))=i=110(yif6(xi))2=0.17

3 GBDT的负梯度拟合

  提升树用加法模型和前向分布算法实现算法的学习优化过程,当损失函数是平方损失和指数损失函数时,每一步的优化都比较简单。但是对于一般的损失函数往往每一步的优化并不容易,所以Freidman提出了梯度提升算法,就是利用损失函数的负梯度信息,作为回归问题提升树算法中的残差的近似值,拟合一个回归树

[L(L(y,f(xi)))f(xi)]f(x)=fm1(x)

4 GBDT回归树

GBDT算法
输入:假设训练数据集为 T=(x1,y1),(x2,y2),...(xN,yN) ,损失函数 L(y,f(x))
输出:回归树 f̂ (x)

(1)初始化

f0(x)=argminci=1NL(yi,c)

(2)for m=1,2,…,M
    (a)for i=1,2,…N,计算
rmi[L(L(y,f(xi)))f(xi)]f(x)=fm1(x)

    (b) 对 rmi 拟合一个CART回归树,得到第m棵的叶结点区域 Rmj ,j=1,2,…J
    (c) for j=1,2,…,J,计算
cmj=argmincxiRmjL(yi,fm1(xi)+c)

    (d)更新 fm(x)=fm1(x)+Jj=1cmjI(xRmj)
(3)回归树
f̂ (x)=fM(x)=m=1Mj=1JcmjI(xRmj)

你可能感兴趣的:(机器学习)