梯度提升决策树 - GBDT

Intro

最近因为打算参加一些CTR预估的竞赛,对一些常见的CTR竞赛所用模型做了些学习,本文主要记录一下对GBDT的学习收获。

学过机器学习的人肯定对决策树(Decision Tree)的概念不陌生,决策树可以说是机器学习模型最简单的一种了,非常的直观易懂。那今天要讨论的梯度提升决策树(Gradient Boosting Decision Tree)和决策树本身的关系和区别在哪里呢?主要就在Gradient Boosting这两个词里。

先说Boosting吧,它是一种迭代算法,每一次训练都是在前面已有模型的预测基础上进行。简单地说,先训练一个初始模型,对比真实值和预测值的残差;用残差再训练一个模型,再计算残差,再训练。这样,每一个模型都专注于修正前面模型最不给力的效果方面。于是,通过这种方式联合多个弱分类器,就能得到一个强分类器。GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

那Gradient提现在哪里呢?体现在如何计算残差,GBDT就是用梯度(一阶导)来计算的。


梯度提升决策树 - GBDT_第1张图片

1. 回归树

所有机器学习的初级教程里一定少不了决策树的章节,但通常介绍的都是分类树,而不是GBDT里用的回归树。两者千差万别。

分类树,是穷举每一个特征的每一个阈值,找到使得按照阈值拆分成的两个分枝的熵最大的阈值。在对每个分枝进行重复的拆分直到满足条件位置。但回归树不是,回归树的每一个分枝(不只是叶子节点)都会产生一个预测值。并且回归树的分枝标准不再是熵最大,而是最小均方误差。

回归树和分类树,前者用于预测实数值,如明天的温度、用户的年龄、网页的相关程度;后者用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面。这里要强调的是,前者的结果加减是有意义的,如10岁+5岁-3岁=12岁,后者则无意义,如男+男+女=到底是男是女?GBDT的核心在于累加所有树的结果作为最终结果。

2. GBDT

GBDT简言之,就是迭代多棵回归树来共同决策。当采用平方误差损失函数时,每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树,残差的意义如公式:残差 = 真实值 - 预测值 。

举个例子展现多棵决策树线性求和过程以及残差的意义。训练一个GBDT模型来预测年龄:训练集是4个人,A,B,C,D年龄分别是14,16,24,26。样本中有购物金额、上网时长、经常到百度知道提问等特征。提升树的过程如下:


梯度提升决策树 - GBDT_第2张图片

该例子很直观的能看到,预测值等于所有树值得累加,如A的预测值 = 树1左节点 值 15 + 树2左节点 -1 = 14。因此,给定当前模型 fm-1(x),只需要简单的拟合当前模型的残差。现将回归问题的提升树算法叙述如下:


梯度提升决策树 - GBDT_第3张图片

你可能感兴趣的:(梯度提升决策树 - GBDT)