GBDT 及其改进版本(XGboost, lightGBM)在数据竞赛中占了大半江山,网上讲解的文章也很多,但大多是文字和公式的形式,这里尝试用简单的图解形式,去理解 GBDT 的基本操作过程。
参考《统计学习方法》P149中的例子,说明 GBDT 的构造和预测过程。
GBDT的构造
GBDT 采用的弱分类器限定了 CART,因此构造出来的都是二叉树,因为单棵 CART 树的能力有限,GBDT 通过构造多棵回归树去预测,每棵树都预测前面所有树预测之后的残差(损失函数为平方误差时),因此残差越来越小,预测的精度也就越来越高。
上图中,根据数据表8.2,按照 CART 的构造方式,得到第一棵树T1(这里是用了树桩,但实际中每棵树的深度都可以更深),根据T1预测每个x,都会有对应的残差,得到残差表8.4,形成新的训练集(x,r),再训练下一棵树,直至达到指标要求。
GBDT的预测
在《统计学习方法》中,经过训练会得到6棵树,最终的提升树就是这6棵树的组合。
如上图,书中可以说是将6棵树合并成了一棵树,因为这个例题有比较简单的结构,每棵树都是由树桩组成,因此非常容易合并,复杂一些无法合并的树,就是并行地得到每棵树的预测值然后相加就是最终的预测值。
简单小结
GBDT是由多棵树组成的,而且每一颗树都依赖于之前树建立后的残差,因此它的建树过程不是并行的,而是串行的,所以速度较慢。
这种个体学习器之间存在强依赖关系、必须串行生成的序列化方法,就是boosting方法,而个体学习器间不存在强依赖关系、可同时生成的并行化方法,就是bagging,如随机森林。
但对于GBDT,所有的树一旦建好,用它来预测时是并行的,最终的预测值就是所有树的预测值之和。
对于随机森林,它的预测也是并行的,但最终的预测值是所有树预测值的平均。(注:这是对于回归问题)
另外,对于其公式的解释,可以参考: