从参数空间到函数空间理解GBDT+XGBoost

内容摘要

  • 泰勒公式
  • 最优化方法
    • 梯度下降法
    • 牛顿法
  • 从参数空间到函数空间
    • 从Gradient descend到Gradient boosting
    • 从Newton's method到Newton Boosting
  • Gradient boosting tree算法原理
  • Newton Boosting算法原理
  • LightGBM

泰勒公式

  1. 定义:是一个用函数在某点的信息,描述其附近取值的公式。
  2. 基本形式:

    其中一阶泰勒展开式就是求一阶导,二阶展开式即求二阶导。x0为已知,公式表示f(x)在x0附近的展开。

  3. GDBT或是xgb都是一个参数迭代的过程,因此这里表示一个迭代形式的泰勒函数:

    假设

    将f(x^t) 在x^(t-1)处进行展开:

梯度下降法(Gradient Descend Method)

机器学习中需要最小化损失函数L(θ),这个θ就是要求解的模型参数。GDM常用于求解无约束最优化问题,是一种迭代方法。初始话θ为θ^0,不断迭代来更新θ的值,进行损失函数的极小化。

  • 迭代公式 θ^t = θ^(t-1)+△θ
    进行一阶泰勒展开:



    要使得L(θ^t) < L(θ^(t-1)),则可取:


  • 其中解释一下为何△θ要取值为上式:首先明确,a的值为正,为了保证△θ恒为负数,则需要乘上L’(θ^t-1)先保证其为整数,再加上负号即可。
  • 其实a就是我们常用的学习速率
  • a如何选取?
    对于这个问题其实有很多方法可以使用,如果考虑使用full gradient较为笨但是精确的方法是line search,但是其复杂度过高,因此通常我们选取一个很小的值即可例如0.01-0.1之间。

牛顿法

牛顿法就是求取二阶泰勒展开:

假设我们要求的参数θ是一维,则记一阶导数为g,二阶导数为h,那么上式可表示为:



此时若求取L(θ^t) 的极小值,则令g△θ+h△θ^2/2极小,求取其一阶导数为0时的△θ即可:



如果参数θ是向量形式,那么可以向高维空间推广,此时的h为H(海森矩阵)。


以上介绍的梯度下降和牛顿法均为参数空间的优化算法
如何从参数空间推广到函数空间呢?即从Gradient descend到Gradient boosting;从Newton's method到Newton Boosting
下面介绍GBDT和xgb中使用的函数空间的优化算法,其基本原理还是梯度下降和牛顿法。
关系是这样的:
GBDT泛指一切梯度提升树,包括XGB。为了区分二者,可以利用其梯度下降的原理进行区分:

  • GBDT在函数空间中利用梯度下降进行优化
  • XGB在函数空间利用牛顿法进行优化

1. 梯度下降从参数空间到函数空间


其中对于函数空间,仅仅是将参数的拟合换为函数的拟合,每次仍然迭代的是一个负梯度,只是其最终得到的是增量函数的累加而不是增量参数累加。
GBDT里,迭代项ft(x)就是我们的决策树,最终将每棵决策树的预测值(函数)加起来。

2. 牛顿法从参数空间到函数空间


对于牛顿法的函数空间优化,其方法类似于梯度下降的函数空间优化

3. boosting算法小结
无论是梯度下降还是牛顿法,其函数空间上的boosting优化模型都看作是一类加法模型,相加的对象可以是一系列弱分类器或是回归树。

4. 牛顿法小结
牛顿法是梯度下降的进一步优化,梯度下降利用目标函数的一阶偏导信息,以负梯度方向作为搜索方向,只考虑目标函数在迭代点的局部性质;而牛顿法不仅使用目标函数的一阶偏导数,还进一步利用了目标函数的二阶偏导,这样就考虑了梯度变化的趋势,因而能更全面地确定合适的搜索方向以加快收敛。


GBDT原理分析

GBDT最早由Friedman提出,其核心是拟合前面迭代所留下来的残差,使其达到最小。

  • 模型F定义为一个加法模型:


其中x为输入样本,h为分类回归树,w是分类回归树的参数,a是每棵树的权重。

  • 通过最小化损失函数求解最优模型:


  • GBDT原是论文的算法伪代码:


算法的输入(xi,yi)分别是样本和lable,T为样本个数,L为损失函数

  • GBDT的学习过程是使得前面拟合的残差达到最小,那么首先计算残差,即算法中的2.1步,也称为响应。
  • 接着学习第t棵树时就是寻找最新的残差的最小值。可以看到lable yi变成了前t-1棵树的残差值。
    然后寻找合适的步长(通常情况,不使用line search,而是手动给一个很小的值)
    最后将第t棵树与前t-1棵树加起来,更新模型即可。

XGBoost原理

  • 模型的函数形式


xgb同样是一个加性模型,同样是在学习多棵树的结果并将其累加。f(x)就是每一棵树。其中q(x)表示将样本x分到了某个叶子节点上,w是叶子节点的分数,所以wq(x)就表示回归树对样本的预测值。

  • 回归树的预测输出是一个实数的分数,因此可以用于回归和分类,以及排序等任务。

目标函数

  • 首先回忆一下参数空间的目标函数:



    实际上就是一个误差函数+正则化项

其中误差函数可以是平方误差或是对数误差等;正则化项可以是L1或L2

  • 正则化项

wepon大神说道,正则化项的理解可以从贝叶斯先验角度去理解。也就是说,如果引入L2,那么就是假设模型参数服从正态分布(相当于对参数加上了分布约束),这样一来就将参数的取值进行一定的限制,同时可以知道,正态分布取0附近的概率最大,因此又将参数空间可能的范围进一步缩小,模型最终学习出来的参数取值都在0附近。

  • 现在来看函数空间的目标函数


其中正则化项是对每一棵树的复杂度进行惩罚。
相比于GBDT,xgb目标函数就是多了一个正则化项。这样的做法使得模型不易过拟合。
既然是对复杂度做惩罚,那么树的什么特性可以反映复杂度?

  • 树的深度、内部节点个数、叶子节点个数,叶节点分数
    xgb中选用了叶子节点个数(T),叶节点分数(w)来反映树的复杂度,其复杂度定义如下:

看完正则化项后再来关心一下目标函数中的误差函数


  • 首先模型第t次迭代后将ft(x)与前t次的迭代结果进行相加,并代入目标函数,即式2,然后将误差项在yt-1处进行二阶展开,然后去掉常数项得到:



    上面这个形式跟牛顿法的形式几乎一样,由于f在函数空间中是一个树的形式,则将f写为树的结构:

    代入目标函数中得到:

    虽然现在loss函数可以求最小值了,但是公式的两项并不统一,即:

    如何将两项进行统一以方便求导呢?因为样本都会落在每一个节点上面,因此可以定义如下:

    对每一个样本都相应有一个gi和hi。从最终的公式可以看到,由于是按照叶子节点进行累加,所以相当于每一个叶子节点均有一个误差函数,都要进行相应的误差计算。
    根据转换后的损失函数,就可以求极小值了,前提是树结构确定:
    相当于每一棵树的最小损失都可以计算了。

既然前提是需要树结构确定,那么如何确定树的结构?即如何确定树节点的分裂方法?

  1. 可以暴力枚举全部的树结构然后选择损失最小的结构即可。明显是一个NP问题。不现实!
  2. 贪心法:每次尝试分裂一个叶节点,计算前后增益,选择增益最大的保留。

    那么增益如何计算?
  • xgb增益计算方法的演进:
  1. 初始版本:

    这样的方法相当于去遍历所有可能分割的分割点,然后计算增益,最后选取最大的增益的分列方式去分割,明显负责度太高!!

  2. 近似算法:
    对于每一个特征,只考虑分位点,以减少复杂度,分位点的选取粒度有两种:全局global和局部local。全局速度快但是经度降低。
    解释一下:先将某特征的特征值从小到大排序,再选取分位点进行计算增益即可。

    3. xgb中采用的树节点分裂方法(增益计算)

    如何看权重分位点的选取呢?上图中前六个特征值的权重之和为0.6,7-8的权重和为0.6,最后一个为0.6,就这选取权重之和相同的点来进行分位点的选取,然后再计算增益。

内容参考wepon大神天池直播

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343