Press "Enter" to skip to content

梯度提升树原理及其公式推导

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

概述

 

梯度提升树与adaboost原理( 丹丹:Adaboost算法讲解 )一致,都是加法模型,与adaboost不一致的是:

 

 

    1. 里面的基学习器换成了树模型(回归树或者分类树)

 

    1. 梯度提升树的加法模型前面没有权重参数,或者说权重参数都是1

 

    1. 损失函数是按照具体的应用场景进行划分,二分类用交叉熵或者指数函数,多分类问题用softmax,回归用mse,甚至可使用自定义的损失函数

 

 

其形式如下:

 

(1)

 

其中,M为数的个数, 表示决策树, 为决策树的参数。

 

优化方法

 

梯度提升树采用的优化方法也是前向分步算法,整体步骤如下:

 

首先确定初始提升树 ,第m步的模型是

 

(2)

 

其中, 为当前模型,通过经验风险极小化,确定下一棵决策树的参数 :

 

(3)

 

二分类问题的提升树

 

基学习器:分类树

 

损失函数:指数损失函数

 

整个求解过程与adaboost类似,可以看成adaboost的特殊情况,adaboost整体思路可用下面一张图来表示

 

adaboost整体思路

adaboost每个基分类器训练样本的构造思路是提高前一轮“错误分类”的样本的权值,降低前一轮“正确分类”的样本的权值,在二分类问题提升树中,相当于限制每个基分类器 为一颗只有两层的二叉树,而分类器的权重 为1,可表示为如下形式:

 

二分类问题梯度提升树

为什幺可以等价于adaboost的特殊情况呢?

 

要求我们使用指数损失函数,就可以用指数损失函数来调整样本数据的权值,从而让每个基分类器学到不同的内,因此其具体的优化方法与adaboost完全一致。

 

回归问题的提升树

 

基学习器:回归树

 

加法模型中的每一棵树都是一个回归树

损失函数:平方误差损失

 

(4)

 

其中r是模型上一步的预测值与真实值之间的差距,称为残差,因此每一个新的基学习器的训练,就是利用残差数据构建训练样本,让新的基学习器拟合该训练样本。

 

(5)

 

所以,回归问题提升树的整体思路如下:

 

 

    1. 个体学习器如何训练得到?训练数据的权值或概率分布如何改变?残差

 

    1. 如何将个体学习器进行组合?直接相加

 

    1. 目标:通过每棵树拟合残差使得整体损失逐步减小

 

 

算法流程

 

回归问题提升树的算法流程

一般决策问题梯度提升树【GBDT】

 

要解决的问题

 

由公式(3) 我们可以看到梯度提升树的损失函数形式,当 采用不同的损失函数时,对应的凸优化问题不一样,希望找到一个通用的方式,求解一般性凸优化问题

 

基学习器

 

GBDT的基学习器是回归树,即

 

损失函数

 

一般损失函数:

 

【前向分布算法】+【梯度提升】

 

GBDT是加法模型,加法模型一定会存在多个优化器,不断迭代优化,我们要确保,每增加一个学习器,都要使得整体损失越来越小,即第m步要比第m-1的损失小。因此,优化目标用公式表达如下:

 

(6)

 

即:

 

(7)

 

接下来,将损失函数进行处理,往我们的核心目标上靠

 

对 进行一阶泰勒展开,回顾一阶泰勒展开的公式 ,对应 中只有 是未知量且 ,而 是已知量,因此有

 

(8)

 

用 减去公式(8),即

 

(9)

 

当 时,

 

这里等于0的情况不用考虑,因为等于0相当于加一个基分类器后损失函数没有减小,在实际情况中这棵树就不加了,所以等于0的时候,终止训练即可。

 

因此,基分类器训练样本的构造方式是通过以下公式

 

(10)

 

即,让每棵新增的树学习负梯度

 

 

(11)

 

将 带入 可得到 ,进而得到第m轮的训练样本

 

总结上述过程,GBDT的整体流程为:

 

 

    1. 计算当前损失函数的负梯度表达式(11)

 

    1. 构造训练样本将 带入 可得到 ,进而得到第m轮的训练样本为

 

    1. 让当前基学习器去拟合上述训练样本得到

 

 

算法流程

 

GBDT算法流程

整体思路回顾

 

 

    1. 个体学习器如何训练得到?训练数据的权值或概率分布如何改变?拟合负梯度

 

    1. 如何将个体学习器进行组合?简单相加

 

    1. 目标: ,使得总体损失逐步减小

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。