梯度提升(gradient boosting)算法

算法:

输入:训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)},xiRn,yiRL(y,f(x));
输出:回归树 f^(x) .
(1) 初始化

f0(x)=argminci=1NL(yi,c)
(2) 对 m=1,2,,M
(a) 对 i=1,2,,N ,计算
rmi=[L(yi,f(xi))f(xi)]f(x)=fm1(x)
(b) 拟合残差 rmi 学习一个回归树,得到第 m 棵树的叶结点区域 Rmj,j=1,2,,J
(c) 对 j=1,2,,J ,计算
cmj=argmincxiRmjL(yi,fm1(xi)+c)
(d) 更新
fm(x)=fm1(x)+j=1JcmjI(xRmj)
(3) 得到回归树
f^(x)=fM(x)=m=1Mj=1JcmjI(xRmj)

思路说明:

算法第 1 步初始化,估计使损失函数极小化的常数值,它是只有一个根结点的树。第 2(a) 步计算损失函数的负梯度在当前模型的值,将它作为残差的估计。对于平方损失函数,他就是通常所说的残差;对于一般损失函数,它就是残差的近似值。第 2(b) 步估计回归树叶结点区域,以拟合残差的近似值。第 2(c) 步利用线性搜索估计叶结点区域的值,是损失函数极小化。第 2(d) 步更新回归树。第 (3) 步得到输出的最终模型 f^(x) .

你可能感兴趣的:(学习笔记)