相关文章链接:
一、提升树(Boosting Decision Tree)
提升树(Boosting Decision Tree)是以CART决策树为基学习器的集成学习方法。
GBDT提升树
提升树实际上就是加法模型和前向分布算法,表示为:
在前向分布算法第m步,给定当前的模型fm-1(x),求解:
得到第m棵决策树 。不同问题的提升树的区别在于损失函数的不同,如分类用指数损失函数,回归用平方误差损失。
当提升树采用平方损失函数时,第m次迭代表示为:
称r为残差,所以第m棵决策树 是对该残差的拟合。
要注意的是提升树算法中的基学习器CART是回归树,
二、GBDT概念
GBDT 的全称是 Gradient Boosting Decision Tree,梯度提升决策树,理解为梯度提升 + 决策树。GB代表的是Gradient Boosting,意为梯度提升,梯度是一种数学概念,一个函数的梯度方向是函数上升最快的方向,相反的,负梯度方向是函数下降最快的方向。GBDT中所有的树都是回归树,而不是分类树,也就是说DT独指Regression Decision Tree。
GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法。
GBDT同样由许多决策树组成,但它于随机森林有许多不同。其中之一是GBDT中的树都是回归树。决策树分为两大类,分类树和回归树。分类树用于分类标签值,如将苹果单纯的分为好与坏的是分类树;回归树用于预测实数值,如能为苹果的好坏程度打个分就是回归树。另一个不同是每棵树都是建立在前一棵树的基础上实现的。
Friedman提出了利用最速下降的近似方法,利用利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。
在GBDT中使用负梯度作为残差进行拟合。
GBDT梯度提升流程
GBDT与提升树的区别在于是残差使用梯度代替,而且每个基学习器有对应的参数权重。
三、 GBDT的流程
GBDT的训练过程
GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通过降低偏差来不断提高最终分类器的精度,(此处是可以证明的)。
弱分类器一般会选择为CART TREE(也就是分类回归树)。由于上述高偏差和简单的要求 每个分类回归树的深度不会很深。最终的总分类器 是将每轮训练得到的弱分类器加权求和得到的(也就是加法模型)。
步骤:
- 针对每个类别都先训练一个回归树。
- 对每个类别分别计算残差。
- 重复直到迭代M轮,就得到了最后的模型。预测的时候只要找出概率最高的即为对应的类别。
四、GBDT工作过程实例
如年龄预测,假设训练集只有4个人A、B、C、D,他们的年龄分别是14,16,24,26.其中A,B分别是高一和高三学生;C,D分别是应届毕业生和工作两年的员工,若用一颗传统的回归决策树来训练,会得到如下图结果:
如果使用GBDT来训练,由于数据太少,限定叶子节点最多有两个,并且限定只学两棵树,会得到下图结果:
两图最终效果相同,为何还需要GBDT呢?答案是过拟合。过拟合是指为了让训练集精度更高,学到了很多“仅在训练集上成立的规律”导致换一个数据集当前规律就不适用了。只要允许一棵树的叶子节点足够多,训练集总是能训练到100%准确率的。在训练精度和实际精度之间,后者才是更重要的。
五、GBDT的优缺点
优点:
- 相对少的调参时间情况下可以得到较高的准确率。
- 可灵活处理各种类型数据,包括连续值和离散值,使用范围广。
- 可使用一些健壮的损失函数,对异常值的鲁棒性较强。
缺点:
弱学习器之间存在依赖关系,难以并行训练数据。