龙空技术网

手把手机器学习实战系列: GBDT算法直观理解

希言智数 371

前言:

目前各位老铁们对“gbdt算法案例”都比较注重,小伙伴们都需要学习一些“gbdt算法案例”的相关内容。那么小编也在网上搜集了一些对于“gbdt算法案例””的相关内容,希望看官们能喜欢,小伙伴们一起来了解一下吧!

基本思想

GBDT算法又称为梯度提升树算法,是现在机器学习中最为有名的一种算法,它属于boosting算法中的一种,以前我们介绍过Adaboost算法,它与Adaboost算法有着很大的不同,Adaboost算法是通过利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去,而使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型。

为了更好的理解这个算法,本文将尽可能的减少数学公式的使用,以形象生动的实例,为大家阐述GBDT的算法的原理, 我们通过一个例子进行阐明,我们以打高尔夫球为例,

在开始发球时,通常是尽可能远的把球打出去,然后再慢慢的打, 假设开始打出去的距离是f0, 通常第一杆不会击中目标,如果能够击中的话,那么他的技术已经达到出神入化了,所以接下来需要开始打下一杆,在打下一次时,需要估计一下当前的位置距离目标的方向和距离,即 y-f0, 然后根据以往的经验,打出下一杆,此时打出的距离是a1, 此时的目标误差是

如果此时的误差不为0,需要进行第三杆,在第三轮中,当前的位置与目标的位置的距离是

以此类推,不断的进行,直到打入目标位置为止

上面的过程可以总结如下:

用迭代的方式表示出来,就是:

其中

相当于是一个学习器,用来根据残差的信息,去学习出一个模型出来,然后得到一个预测值,相当于球员根据观测的信息, 进而调整击打的力度和击打的方向等

模型介绍:

GBDT算法是每次通过残差的信息去学习出一个模型,然后再进行预测

输入的样本是:

选择的模型: 回归树(CART)

算法流程:

1.初始化弱学习器:

2.对迭代轮数m=1,2,…M有:

(1)对每个样本i=1,2,…,N,计算负梯度,即残差

(2)将上步得到的残差作为样本新的真实值,并将数据(xi, rim)作为训练数据,得到一颗新的回归树,

(3)对叶子区域,计算最佳拟合值,

(4)更细新的学习器

实例详解:

如下表所示:一组数据,特征为年龄、体重,身高为标签值。共有5条数据,前四条为训练样本,最后一条为要预测的样本。

1.初始化弱学习器:

由于此时只有根节点,样本1,2,3,4都在根节点,此时要找到使得平方损失函数最小的参数ΥΥ,怎么求呢?平方损失显然是一个凸函数,直接求导,倒数等于零,得到

得到初始学习器

2.计算残差

如下图所示:

在构建回归树时,特征值不会变,残差值将会作为标签值, 如图所示:

那么如何去构建回归树呢?

(1)首先要选择出那个特征作为分裂属性

(2)当选择出哪个特征要分裂,下一步要确定从特征哪个值作为分裂点

所以为了选择出最佳的特征和最佳的分类,需要遍历所有的特征和相应的分裂点

接着,寻找回归树的最佳划分节点,遍历每个特征的每个可能取值。从年龄特征的5开始,到体重特征的70结束,分别计算方差,找到使方差最小的那个划分节点即为最佳划分节点。

例如:以年龄7为划分节点,将小于7的样本划分为一类,大于等于7的样本划分为另一类。样本1为一组,样本2,3,4为一组,两组的方差分别为0,0.047,两组方差之和为0.047。所有可能划分情况如下表所示

以上划分点是的总方差最小为0.0125有两个划分点:年龄21和体重60,所以随机选一个作为划分点,这里我们选年龄21。

此时还需要做一件事情,给这两个叶子节点分别赋一个参数,来拟合残差

此时的参数就是每个分支节点内所有样本标签的均值

样本1,2为左叶子节点, 此时的参数(即标签预测值)为

样本3,4为右叶子节点,此时的标签预测值为

更新强学习器:

预测样本5

样本5在根节点中(即初始学习器)被预测为1.475,样本5的年龄为25,大于划分节点21岁,所以被分到了右边的叶子节点,同时被预测为0.275。此时便得到样本5的最总预测值为1.75。

标签: #gbdt算法案例 #gbdt 算法