GDBT-理解梯度提升原理篇

GDBT--理解梯度提升原理篇

以决策树为基函数的提升方法称为提升树,提升树的模型可以表示为决策树的加法模型,基函数一般是cart回归树,GDBT是属于boosting的一员,与之对应的还有bagging,对于bagging中代表算法有随机森林,boosting中代表的有adaboost、xgboost等,目前数据挖掘用的比较多的还是boosting。本文目的是介绍学习boosting家族中的GDBT,所有对于bagging与boosting的区别就不深入介绍。GDBT的模型如下:

在介绍这个算法之前,先深入理解一下梯度的相关问题与应用

什么是梯度

二维的梯度是导数,多维的梯度是不同维度的导数的向量。简单理解:

梯度为(2x,2y,2z)

什么是方向导数

想象一下在三维空间中有一个曲面F(x,y,z),取任意一点,从点A沿着球面出发有多少方向可以走呢?答案是无数条,它可以沿着x轴走,可以沿着y轴走,可以沿着z轴走,更可以是以(△x,△y,△z)为基底的任意方向走。

假设终点为球面上一点B,向量为AB。函数F(A)到F(B),是不是存在了变化?函数值要么变大或者变小,也就是存在变化量,假设上图的性质是连续可导的,那么一定存在导数:

,如果你忘记了导数所代表的含义,没关系(因为理解导数确实很重要),带你重复复习一下。以函数y=x为例吧,它的导数为1,这个导数代表了x方向每增加一个单位,y就会增长1。导数正是反映了函数的变化。与高中物理中的加速度有点像,加速度反映了速度在单位时间内的变化量。如果还是懵懵懂懂,请记住一点,导数是反映了函数的变化程度大小。也就是说,在三维曲面中,对于不确定的点B,向量AB可以是任何方向,函数可以在向量AB的方向上,任意变化,所以就存在了不同方向的导数,也就是方向导数。

大白话解释这种数学定义可能有些童鞋适应不了,不说了上定义(来自百度百科):

为什么负梯度方向是函数下降最快方向

把函数假设为二维函数,更容易理解点。随手粗糙的画了一张图。

从点A引一条直线,直线长度为1,向量AB方向,B点对应的y值为1,向量AC方向,点C对应的y值明显小于1。二维场景,同样适用高维情景。上面推导出了方向导数的定义

,方向导数正是反映函数的变化,如果求出某个方向的的方向导数模最大,不就说明变化最大吗?方向导数还有另外一种写法

反之负梯度方向下降最大。

的方式找到最小值,通过找到负梯度方向,根据一定的步长变化x,y,z。GDBT的思想就是直接把f(x,y,z)看做变量,根据一定的步长变化f(x,y,z)。

梯度下降,不停的优化损失函数L的同时,函数

fm

(x,y,z)也不断的更新迭代,迭代到一定的次数损失达到预期值,就得到了一个判别函数f(x,y,z)如果函数f是树的话,就称为梯度提升树。

现在理解了为什么梯度提升树是集合树加权累加求和的结果了没? GDBT基函数都是cart树,通过一连串的cart树加权求和得到预测或者分类结果,下一篇文章将会以实例详细介绍GDBT的分类与预测的运算过程,帮你彻底搞懂这个666的算法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180530G0OJFR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券