龙空技术网

集成学习:基于梯度的Boosting算法——GBDT

微说互联网 254

前言:

现时同学们对“gbdt预测算法包”大约比较看重,兄弟们都想要剖析一些“gbdt预测算法包”的相关知识。那么小编也在网上网罗了一些对于“gbdt预测算法包””的相关资讯,希望姐妹们能喜欢,咱们快快来学习一下吧!

前文《集成学习: Boosting提升策略》介绍了Boosting框架以及Adaboost算法,接下来我们将开始对Boosting Tree的介绍。本文将再介绍一种非常著名的Boosting算法——GBDT。

关于GBDT与Adaboost的区别与联系,它们都属于Boosting方法,只是损失函数不同:AdaBoost 是通过提升错分数据点的权重来定位模型的不足,而Gradient Boosting是通过计算梯度来定位模型的不足,因此GBDT可以使用更多种类的损失函数。

GBDT

GBDT(Gradient Boosting Decision Tree,梯度提升决策树)是构建预测模型的最强大技术之一。主要思想是:每一次建立单个学习器是在之前建立的模型的损失函数的梯度下降方向。GBDT可以用于回归,也可以用于分类,GBDT以回归树作为基学习器,一般以CART树算法作为主流基学习器。

以梯度提升回归树的迭代过程为例,先建立一棵树,然后逐渐迭代,每次学习器作为迭代过程中都增加一棵树,逐渐形成众多树模型集成的强评估器。

对于决策树而言,每个被放入模型的任意样本最终一个都会落到一个叶子节点上。对于回归树,每个叶子节点上的值是这个叶子节点上所有样本的均值。

GBDT的核心思想

回归树

利用平方误差来表示损失函数,其中每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树。其中残差=真实值-预测值提升树即是整个迭代过程生成的回归树的累加

可以从下图中直观地理解GBDT的思路,主要是通过残差(相当于梯度)来不断地得到新的回归树。

分类树

GBDT分类算法在思想上和回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致无法直接从输出类别去拟合类别输出的误差。为解决此问题,用类似于逻辑回归的对数似然损失函数的方法,也就是说用类别的预测概率值和真实概率值来拟合损失函数。GBDT的优缺点

与其他Boosting算法(比如AdaBoost等)相比,GBDT的优点包括:

可以灵活处理各种类型的数据,包括连续值和离散值,既可以分类,也可以回归;GBDT可以使用不同类型的损失函数,如果使用一些健壮的损失函数,对异常值的鲁棒性将会非常强;

不过与Boosting类算法一样,GBDT的弱学习器之间也存在依赖关系,难以并行训练数据。

随机森林与GBDT的比较

前文《集成学习:Bagging和随机森林》介绍了Bagging类集成学习算法中最主要的算法是随机森林,那么GBDT作为Boosting类集成学习的代表,与随机森林相比如何呢?

相同点

都是由多棵树组成最终的结果都由多棵树共同决定

不同点

组成随机森林的树可以并行生成,GBDT 只能串行生成;随机森林的结果是多数表决的,而GBDT则是多棵树加权累加之和;随机森林对训练集一视同仁权值一样,GBDT是基于权值的弱分类器的集成;随机森林是减少模型的方差,而GBDT是减少模型的偏差。

此外,相比随机森林来说,GBDT对异常值比较敏感,随机森林不需要进行特征归一化,而GBDT需要特征归一化。

基于梯度提升算法的学习器叫做GBM(Gradient Boosting Machine),因此GBDT除了属于Boosting算法中的一员,也是GBM中的一种。理论上,GBM可以选择各种不同的学习算法作为基学习器。现实中,用得最多的基学习器是决策树,所以最常用的GBM也就是GBDT。

标签: #gbdt预测算法包 #gbdt算法案例