GBDT小结

GDBT

在说GBDT前,我们先说下它的俩前缀Gradient Boosting:

  • Boosting: 这是一种迭代算法,每一次训练都是在前面已有模型的预测基础上进行。
    最简单地说,先训练一个初始模型,对比真实值和预测值的残差;用残差再训练一个模型,再计算残差;再训练……。这样,每一个模型都专注于修正前面模型最不给力的效果方面。
    于是,通过这种方式联合多个弱分类器,就能得到一个强分类器。
  • Gradient: 梯度。对于单个变量来说,就是一阶导数。
    前面Boosting要计算残差,方法就很多了,你可以直接相减,也可以定义个函数。这里Gradient就是说用梯度来计算残差。
    所以说Gradient Boosting是一种算法框架,它是用Grdient计算残差的Boosting过程,而GBDT只是用决策树来训练的一种具体实现

概念定义 what

ensemble learning(集成学习)

从下图,我们可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。
引自参考文献
ensemble learning(集成学习)
也就是说,集成学习有两个主要的问题需要解决,
第一是如何得到若干个个体学习器,
第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。

集成学习之个体学习器

如何得到若干个个体学习器? 这里我们有两种选择。

第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。
同质个体学习器使用最多的模型是CART决策树和神经网络。
同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,
第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,
第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。
第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。
目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。

集成学习之boosting

Boosting 是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。这种算法无法并行,例子比如 Adaptive Boosting.
Boosting算法的工作机制
在这里插入图片描述
从图中可以看出,Boosting算法的工作机制

  1. 从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视;
  2. 基于调整权重后的训练集来训练弱学习器2;
  3. 如此重复进行,直到弱学习器数达到事先指定的数目T;
  4. 最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
    Boosting系列算法里最著名算法主要有:
  • AdaBoost算法
  • 提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。

GBDT是什么?

GBDT有很多简称,有

  • GBT(Gradient Boosting Tree),
  • GTB(Gradient Tree Boosting ),
  • GBRT(Gradient Boosting Regression Tree),
  • MART(Multiple Additive Regression Tree),

其实都是指的同一种算法,本文统一简称GBDT(Gradient Boosting Decision Tree)。GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法的话,个人认为GBDT应该占一席之地。

GBDT 使用的弱分类器就是 Decision Tree,而融合的方法叫做 Gradient Boosting。

Gradient 梯度

梯度的提出只为回答一个问题

函数在变量空间的某一点处,沿着哪一个方向有最大的变化率?

梯度定义grad

函数在某一点的梯度是个向量,它的方向与函数在这点取得最大方向导数的方向一致,而它的模为方向导数的最大值。
函数在一点的梯度方向与等值线在这点的一个法线方向相同,它的指向为从数值较低的等值线指向数值较高的等值线,梯度的模就等于函数在这个法线方向的方向导数;
—《同济大学高等数学下册》p49

这里注意三点:

梯度是一个向量,即有方向有大小;
梯度的方向是最大方向导数的方向;
梯度的值是最大方向导数的值。
梯度即函数在某一点最大的方向导数,函数沿梯度方向函数有最大的变化率。

梯度的应用

一个标量场 数量变化最快的方向就是梯度方向,
那么我们可以用梯度来优化损失函数,如梯度下降求损失函数的最小值…
形象理解就是:山坡某个点坡度最陡的方向

梯度本质就是一个向量。一个曲面上某点(x,y),梯度是由该点偏导数得出的向量(a,b)。
可以类比成:你站在该点,按照向量所指的方向上山最陡。

导数

导数:被定义为一个极限,其意义就是变化率
微分:是一个线性函数,其意义就是变化的具体数值
切线:有了导数之后就可以被确定下来了

几何意义:f(x)在点x0处的导数为改点切线的斜率
物理意义:动点在某时刻t0的瞬时速度(极限值)
方向导数
方向导数就是一个曲面上的某点(x,y),从该点起始沿特定方向函数的变化率。
可以类比成:有一个山峰,你站在山顶观察,北坡较陡南坡较缓。
Boosting
Boosting是一族可将弱学习器提升为强学习器的算法,属于集成学习(ensemble learning)的范畴;
Boosting方法基于这样一种思想:
对于一个复杂任务来说,将多个专家的判定进行适当的综合得出的判断,要比其中任何一个专家单独的判断好。
通俗理解。
“三个臭皮匠顶个诸葛亮”,一堆弱分类器的组合就可以成为一个强分类器;
“知错能改,善莫大焉”,不断地在错误中学习,迭代来降低犯错概率;
弱学习算法和强学习算法
要理解好Boosting的思想,首先需从弱学习算法和强学习算法来引入:

强学习算法:存在一个多项式时间的学习算法以识别一组概念,且识别的正确率很高;
弱学习算法:识别一组概念的正确率仅比随机猜测略好;
Kearns & Valiant证明了弱学习算法与强学习算法的等价问题,
如果两者等价,只需找到一个比随机猜测略好的学习算法,就可以将其提升为强学习算法。

那么是怎么实现“知错就改”的呢?
Boosting算法,通过一系列的迭代来优化分类结果,每迭代一次引入一个弱分类器,来克服现在已经存在的弱分类器组合的shortcomings;

在Adaboost算法中,这个shortcomings的表征就是权值高的样本点;
而在Gradient Boosting算法中,这个shortcomings的表征就是梯度;
无论是Adaboost还是Gradient Boosting,都是通过这个shortcomings来告诉学习器怎么去提升模型,也就是“Boosting”这个名字的由来吧

Adaboost 算法
Adaboost算法
在这里插入图片描述
前一个学习器改变权重w,然后再经过下一个学习器,最终所有的学习器共同组成最后的学习器。
如果一个样本在前一个学习器中被误分,那么它所对应的权重会被加重,相应地,被正确分类的样本的权重会降低。

Gradient boosting梯度提升
梯度提升(Gradient boosting)是一种用于回归、分类和排序任务的机器学习技术,属于Boosting算法族的一部分。
梯度提升同其他boosting方法一样,通过集成(ensemble)多个弱学习器,通常是决策树,来构建最终的预测模型。
Alt textAlt text
在这里插入图片描述

  • Gradient Boosting 在迭代的时候选择梯度下降的方向来保证最后的结果最好。
    损失函数用来描述模型的“靠谱”程度,假设模型没有过拟合,损失函数越大,模型的错误率越高
  • 如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度方向上下降。
    Gradient Boosting是在boosting思想下的一种函数(也可以说是模型)的优化的方法,首先将函数分解为可加的形式(其实所有的函数都是可加的,只是是否好放在这个框架中,以及最终的效果如何)。然后进行m次迭代,通过使得损失函数在梯度方向上减少,最终得到一个优秀的模型。值得一提的是,每次模型在梯度方向上的减少的部分,可以认为是一个“小”的或者“弱”的模型,最终我们会通过加权(也就是每次在梯度方向上下降的距离)的方式将这些“弱”的模型合并起来,形成一个更好的模型。

Decision Tree基本思想

DT定义
机器学习中,决策树是一个预测模型,数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测;
他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。
决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。
从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。
一个决策树包含三种类型的节点:

决策节点:通常用矩形框来表示
机会节点:通常用圆圈来表示
终结点:通常用三角形来表示
决策树示例
决策树学习也是数据挖掘中一个普通的方法。在这里,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。
每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。

另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。

参考文献
http://geosmart.github.io/2017/07/26/GBDT学习笔记/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值