GBDT提升算法

概述

GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。
GBDT是机器学习算法中非常重要的一个算法,公认泛化能力较强的算法。

名词解释

均方差

均方差的意思是差的平方的平均值,表示为: i = 1 n ( f ( x i ) f ( x i , ) ) n \frac{\sum_{i=1}^n(f(x_i) -f(x_i^,))}{n}
其中 f ( x i ) f ( x i , ) f(x_i) -f(x_i^,) 表示实际值与预测值的差。
均方差是一种损失函数,在GBDT中作为策略树分支的依据,分支的目的就是使均方差向着最小发展。

基本原理

GBDT使用决策树模型进行计算,基于上一个决策树的计算结果,继续使用决策树进行优化,直到达到指定的阈值或优化效果提升效果不明显的时候结束。

决策树计算逻辑

GBDT中的决策树属于回归树,每个节点上所有样本的平均值作为该节点的预测值,分支的依据是均方差,即分支的时候要保持均方差尽量的小,当决策树达到最大树深度或最大叶子节点等限制条件时,停止分裂,这样就完成了一颗决策树的构建。

迭代过程

通过一颗决策树是不能得到计算结果的,需要使用多棵树进行迭代。

一颗决策树构建完成后,每个叶子节点都会有一个预测值,把实际值与预测值的差(残差)取出来,作为新决策树的输入样本,继续进行决策树的计算。不断迭代,直到达到设定的限定条件为止。

GBDT的迭代过程是一个不断优化的过程,每次走一小步逐渐逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合。

示例

我们以预测人的年龄为例,来看看GBDT的计算过程。
简单起见训练集只有4个人,A,B,C,D,他们的年龄分别是14,16,24,26。其中A、B分别是高一和高三学生;C,D分别是应届毕业生和工作两年的员工。
第一棵决策树:
在这里插入图片描述
树中有3个节点,根节点是4个人的年龄,根节点的预测值是所有人的平均年龄:20.
左节点有两个人,预测值是AB两个人的平均年龄15;右节点有两个人,预测值是CD两个人的平均年龄25.
这时候就可以计算出ABCD4个人的残差,残差计算公式为:实际值-预测值。

  • A的残差=14-15=-1.
  • B的残差=16-15=1.
  • C的残差=24-25=-1.
  • D的残差=26-25=1.

这样第一棵树就计算完成了。

第二棵决策树:

把第一颗树的输出作为输入,进行第二课决策树的构建:
在这里插入图片描述
可以看到,树根节点是预测值为:-1+1±+1=0.
树左节点的预测值为-1;树右节点的预测值为1.计算ABCD的残差为:

  • A的残差:-1-(-1)=0
  • C的残差:-1-(-1)=0
  • B的残差:1-1=0
  • D的残差:1-1=0
    这样第二棵树就计算完成了。

预测结果计算

到第二棵树发现ABCD的残差都已经为0了,所以可以结束迭代,进行最终的预测了。预测的公式为: i = 1 n P \sum_{i=1}^nP ,P代表每棵策略树的预测结果,所以ABCD的年龄分别为:

  • A:15 - 1 = 14.
  • B:15 + 1 = 16.
  • C:25 - 1 = 24.
  • D:25 + 1 = 26.

适用场景

GBDT可以应用于绝大多数的回归问题,包括线性/非线性,也可以应用在分类问题上,通过设置阈值的方式。

拓展

xgboost:是一个非常流行的提升算法。
lightGBM:微软开源的提升算法,相对于前两个算法的优势为:

  • 更快的训练效率
  • 低内存使用
  • 更高的准确率
  • 支持并行化学习
  • 可以处理大规模数据

参考

GBDT详解
GBDT算法原理以及实例理解

发布了48 篇原创文章 · 获赞 34 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/u013252773/article/details/88656045