转载于:GBDT原理详解
统计学习方法--提升树模型(Boosting Tree)与梯度提升树(GBDT)
提升树算法
以决策树为基函数的提升方法为提升树,对分类问题决策树是二叉分类树,回归问题就是二叉回归树。(可以看出,决策树本来就可以用预分类或者是回归)
提升树模型为加法模型,采用前向分步算法训练。
所谓加法模型就是强分类器可以由多个弱分类器
线性相加,如下,M为树的个数, Θ表示决策树的参数。
提升树算法采用前向分部算法,第m步的模型是:
然后损失函数为:
迭代的目的是构建使得本轮损失
最小,求得相应的参数Θ:
对于不同的问题采用的损失函数不同,在分类问题中使用的就是0/1损失函数。对与回归问题来说,一般采用平方误差函数。
分类提升树
对于基函数是分类树时,我们使用指数损失函数,此时正是AdaBoost算法的特殊情况,即将AdaBoost算法中的基分类器使用分类树即可。
回归提升树
对于回归问题,关于回归树的生成可以参考CART算法中回归树的生成。对于以下问题:
输入:
输出:
对于一颗回归树可以表示为:
其中,参数表示树的区域划分和各区域上的常数。
是回归树的复杂度即叶结点的个数。
那么在前向分步算法的第m步中也就是求解第m个回归树模型时,为了确定参数需要求解:
当采用平方误差损失函数时,损失函数为:
将上面的待求解式子带入到下面的平方误差函数中可以得到以下表达式:
这就表明每一次进行回归树生成时采用的训练数据都是上次预测结果与训练数据值之间的残差。这个残差会逐渐的减小。
算法流程:
(1)初始化模型
(2)对于m=1,2,...,M
(a)计遍历每个特征的每个可能取值,计算残差:
(b) 拟合残差 ,选择平方损失函数最小的切分点学习到一颗回归树,得到这一轮的回归树
(c) 更新
(3)得到回归提升树: