泛统计理论初探——浅谈梯度提升树方法

数据挖掘-初探GBDT算法

初探梯度提升树
   在之前的文章中,我们介绍过集成学习里的提升学习的思路,本文主要是基于提升学习的思路来介绍这种常见的提升学习方法,也就是梯度提升树,俗称GBDT,是常见的提升学习方法之一。该方法和另一种经典的提升学习方法AdaBoost不一样的是,AdaBoost是将每一次预测的错误样本进行权重的提升,使得后续的分类器能够注意到这个预测错误的样本。而对于GBDT来说,它本身就是一种串行的树的组合,每一次分类器只需要大致预测出即可,通过一次次的逼近去预测上一次预测值和真实值之间的差值,从而达到提升学习的效果。
   GBDT是由一系列的CART树进行串行组合后,得到的模型。相对于传统的CART模型来说,GBDT的准确率大大提升。同时,由于CART树可以用来回归和分类,如果用来分类那就称之为CART分类树、如果用来回归那就称之为CART回归树,所以GBDT也可以用来回归或者分类。与此同时,GBDT是可以用作特征筛选的,因为通过计算基尼系数的大小,可以用来当作特征的重要性排序,所以GBDT算法本身是一种非常经典并且实用的算法。
   下面我们来介绍GBDT的算法基本步骤,其中涉及到的算法细节我们不做考虑,主要是讨论它的算法主要流程。GBDT可以用来回归或者分类,其中我们以回归的步骤进行举例,也就是所谓的梯度提升回归树。
   1、相关参数的初始化以及CART树的初始化生成,生成一个只有单个节点的CART树,我们在次数假设举例的梯度提升回归树是使用平方损失函数作为模型的损失函数。并且在初始化的时候,将会设置树的数量、树的深度、每个叶子节点包含的样本数量等关键参数。
   2、对K个数量的CART树,也就是1、2、3、4、5、…、K棵树,依次计算每个CART树的损失函数的负梯度,并且将负梯度在模型的值作为残差的估计。
   3、对于得到的残差e和样本特征X进行拟合得到一棵新的CART回归树,记为第n棵树,得到新的回归树的叶节点的区域Rn
   4、对于当前的n个回归树,进行搜索后估计整个模型的叶节点区域的值,并且使得损失函数达到最小,计算损失函数后进行更新。
   5、得到最终的梯度回归树,此时的损失可以认为是最小的。
在这里插入图片描述
   总的来说,梯度提升树GBDT是属于提升的集成学习算法,该算法本质上和随机森林那种Bagging算法是思路不一样的,GBDT是串行的解决问题,也就是下一个CART树去解决之前的CART树预测错误的误差部分,然后以此提升模型总体的准确率。而随机森林是通过多颗决策树来对预测结果进行投票的组合模型,当然随机森林和梯度提升树都是比较稳健并且预测能力较强的模型。还需要注意的是,随机森林一般使用的是以决策树为基础的,而决策树是以ID3算法或者C4.5算法去计算熵的增益的;对于GBDT里的CART树来说,使用基尼系数去计算熵的增益。初学者需要注意区分GBDT和随机森林的不同点,并且明白GBDT的使用场景和局限,对于GBDT的流程要能够搞清楚,从而可以更好地理解该模型。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/108028126