本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.
概述
梯度提升树与adaboost原理( 丹丹:Adaboost算法讲解 )一致,都是加法模型,与adaboost不一致的是:
- 里面的基学习器换成了树模型(回归树或者分类树)
- 梯度提升树的加法模型前面没有权重参数,或者说权重参数都是1
- 损失函数是按照具体的应用场景进行划分,二分类用交叉熵或者指数函数,多分类问题用softmax,回归用mse,甚至可使用自定义的损失函数
其形式如下:
(1)
其中,M为数的个数, 表示决策树, 为决策树的参数。
优化方法
梯度提升树采用的优化方法也是前向分步算法,整体步骤如下:
首先确定初始提升树 ,第m步的模型是
(2)
其中, 为当前模型,通过经验风险极小化,确定下一棵决策树的参数 :
(3)
二分类问题的提升树
基学习器:分类树
损失函数:指数损失函数
整个求解过程与adaboost类似,可以看成adaboost的特殊情况,adaboost整体思路可用下面一张图来表示
adaboost整体思路
adaboost每个基分类器训练样本的构造思路是提高前一轮“错误分类”的样本的权值,降低前一轮“正确分类”的样本的权值,在二分类问题提升树中,相当于限制每个基分类器 为一颗只有两层的二叉树,而分类器的权重 为1,可表示为如下形式:
二分类问题梯度提升树
为什幺可以等价于adaboost的特殊情况呢?
要求我们使用指数损失函数,就可以用指数损失函数来调整样本数据的权值,从而让每个基分类器学到不同的内,因此其具体的优化方法与adaboost完全一致。
回归问题的提升树
基学习器:回归树
加法模型中的每一棵树都是一个回归树
损失函数:平方误差损失
(4)
其中r是模型上一步的预测值与真实值之间的差距,称为残差,因此每一个新的基学习器的训练,就是利用残差数据构建训练样本,让新的基学习器拟合该训练样本。
(5)
所以,回归问题提升树的整体思路如下:
- 个体学习器如何训练得到?训练数据的权值或概率分布如何改变?残差
- 如何将个体学习器进行组合?直接相加
- 目标:通过每棵树拟合残差使得整体损失逐步减小
算法流程
回归问题提升树的算法流程
一般决策问题梯度提升树【GBDT】
要解决的问题
由公式(3) 我们可以看到梯度提升树的损失函数形式,当 采用不同的损失函数时,对应的凸优化问题不一样,希望找到一个通用的方式,求解一般性凸优化问题
基学习器
GBDT的基学习器是回归树,即
损失函数
一般损失函数:
【前向分布算法】+【梯度提升】
GBDT是加法模型,加法模型一定会存在多个优化器,不断迭代优化,我们要确保,每增加一个学习器,都要使得整体损失越来越小,即第m步要比第m-1的损失小。因此,优化目标用公式表达如下:
(6)
即:
(7)
接下来,将损失函数进行处理,往我们的核心目标上靠
对 进行一阶泰勒展开,回顾一阶泰勒展开的公式 ,对应 中只有 是未知量且 ,而 是已知量,因此有
(8)
用 减去公式(8),即
(9)
当 时,
这里等于0的情况不用考虑,因为等于0相当于加一个基分类器后损失函数没有减小,在实际情况中这棵树就不加了,所以等于0的时候,终止训练即可。
因此,基分类器训练样本的构造方式是通过以下公式
(10)
即,让每棵新增的树学习负梯度
令
(11)
将 带入 可得到 ,进而得到第m轮的训练样本
总结上述过程,GBDT的整体流程为:
- 计算当前损失函数的负梯度表达式(11)
- 构造训练样本将 带入 可得到 ,进而得到第m轮的训练样本为
- 让当前基学习器去拟合上述训练样本得到
算法流程
GBDT算法流程
整体思路回顾
- 个体学习器如何训练得到?训练数据的权值或概率分布如何改变?拟合负梯度
- 如何将个体学习器进行组合?简单相加
- 目标: ,使得总体损失逐步减小
Be First to Comment