GBDT 算法:原理篇_玖富娱乐主管发布


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

本文由云 社区宣布

GBDT 是经常运用的机械进修算法之一,因其精彩的特征自动组合才能和高效的运算大受欢迎。 这里简朴引见一下 GBDT 算法的原理,后续再写一个实战篇。

1、决策树的分类

决策树分为两大类,分类树和回归树。

分类树用于分类标签值,如好天/阴天/雾/雨、用户性别、网页是不是是渣滓页面;

回归树用于展望实数值,如来日诰日的温度、用户的岁数、网页的相干水平;

二者的区分:

  • 分类树的效果不克不及举行加减运算,好天 好天没有实际意义;
  • 回归树的效果是展望一个数值,可以或许举行加减运算,比方 20 岁 3 岁=23 岁。
  • GBDT 中的决策树是回归树,展望效果是一个数值,在点击率展望方面经常运用 GBDT,比方用户点击某个内容的几率。

2、GBDT 观点

GBDT 的全称是 Gradient Boosting Decision Tree,梯度提拔决策树。

要明白 GBDT,起首就要明白这个 B(Boosting)。

Boosting 是一族可将弱进修器提拔为强进修器的算法,属于集成进修(ensemble learning)的领域。Boosting 要领基于如许一种头脑:关于一个庞杂义务来讲,将多个专家的推断举行恰当的综合所得出的推断,要比个中任何一个专家零丁的推断要好。浅显地说,就是"三个臭皮匠顶个诸葛亮"的原理。

基于梯度提拔算法的进修器叫做 GBM(Gradient Boosting Machine)。理论上,GBM 可以或许挑选种种分歧的进修算法作为基进修器。GBDT 实际上是 GBM 的一种状况。

为何梯度提拔要领倾向于挑选决策树作为基进修器呢?(也就是 GB 为何要和 DT 连系,构成 GBDT) 决策树可以或许认为是 if-then 划定规矩的鸠合,易于明白,可解释性强,展望速度快。同时,决策树算法比拟于其他的算法须要更少的特征工程,好比可以或许不消做特征标准化,可以或许很好的处置责罚字段缺失的数据,也可以或许不消体贴特征间是不是相互依赖等。决策树可以或许自动组合多个特征。

不外,零丁运用决策树算法时,有轻易过拟合瑕玷。所幸的是,经由历程种种要领,抑止决策树的庞杂性,下降单颗决策树的拟合才能,再经由历程梯度提拔的要领集成多个决策树,终究可以或许很好的处理过拟合的题目。因而可知,梯度提拔要领和决策树进修算法可以或许相互取长补短,是一对圆满的同伴。

至于抑止单颗决策树的庞杂度的要领有许多,好比限定树的最大深度、限定叶子节点的起码样本数目、限定节点破裂时的起码样本数目、吸取 bagging 的头脑对练习样本采样(subsample),在进修单颗决策树时只运用一部分练习样本、自创随机丛林的思绪在进修单颗决策树时只采样一部分特征、在目的函数中增加正则项责罚庞杂的树构造等。

演示例子:

斟酌一个简朴的例子来演示 GBDT 算法原理。

下面是一个二分类题目,1 透露表现可以或许斟酌的相亲工具,0 透露表现不斟酌的相亲工具。

特征维度有 3 个维度,离别工具 身高,款项,颜值

对应这个例子,练习效果是 perfect 的,悉数准确, 特征权重可以或许看出,对应这个例子练习效果颜值的主要度最大,看一下练习取得的树。

Tree 0:

Tree 1:

3、原理推导

3.1 目的函数

监视进修的症结观点:模子(model)、参数(parameters)、目的函数(objective function)

模子就是所要进修的前提几率散布或许决策函数,它决议了在给定特征向量时怎样展望出目的。

参数就是我们要从数据中进修取得的内容。模子一样平常是由一个参数向量决议的函数。

目的函数一样平常界说为以下情势:

个中,L 是丧失函数,用来权衡模子拟合练习数据的优劣水平;Ω称之为正则项,用来权衡进修到的模子的庞杂度。

对正则项的优化勉励算法进修到较简朴的模子,简朴模子一样平常在测试样本上的展望效果对照稳定、方差较小(奥坎姆剃刀准绳)。也就是说,优化丧失函数只管使模子走出欠拟合的状况,优化正则项只管使模子制止过拟合。

3.2 加法模子

GBDT 算法可以或许看成是由 K 棵树构成的加法模子:

怎样来进修加法模子呢?

解这一优化题目,可以或许用前向散布算法(forward stagewise algorithm)。因为进修的是加法模子,若是可以或许夙昔今后,每一步只进修一个基函数及其系数(构造),逐渐切近亲近优化目的函数,那末就可以或许简化庞杂度。这一进修历程称之为 Boosting。详细地,我们从一个常量展望最先,每次进修一个新的函数,历程以下:

在第 t 步,这个时刻目的函数可以或许写为:

举例申明,假定丧失函数为平方丧失(square loss),则目的函数为:

个中,称

之为残差(residual)。因而,运用平方丧失函数时,GBDT 算法的每一步在天生决策树时只须要拟合前面的模子的残差。

3.3 泰勒公式

界说:

泰勒公式简朴的明白,就是函数某个点的取值可以或许用参考点取值和 n 1 阶导数的来透露表现,而且这个公式是有纪律的对照好记。

依据泰勒公式把函数

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-

点处二阶睁开,可取得以下等式:

则等式(1) 可转化为:

假定丧失函数为平方丧失函数,把对应的一阶导数和二阶导数代入等式(4) 即得等式(2)。

因为函数中的常量在函数最小化的历程当中不起作用,因而我们可以或许从等式(4) 中移撤除常量项,得:

3.4 GBDT 算法

一颗天生好的决策树,假定其叶子节点个数为

决策树的庞杂度可以或许由正则项

来界说,即决策树模子的庞杂度由天生的树的叶子节点数目和叶子节点对应的值向量的 L2 范数决议。

界说鸠合

为一切被划分到叶子节点的练习样本的鸠合。等式(5) 可以或许依据树的叶子节点重新组织为 T 个自力的二次函数的和:

界说

,则等式(6) 可写为:

因为一元二次函数最小值处,一阶导数即是 0:

此时,目的函数的值为

综上,为了便于明白,单颗决策树的进修历程可以或许大抵形貌为: 1. 罗列一切能够的树构造 q 2. 用等式(8) 为每一个 q 盘算其对应的分数 Obj,分数越小申明对应的树构造越好 3. 依据上一步的效果,找到最好的树构造,用等式(7) 为树的每一个叶子节点盘算展望值

但是,能够的树构造数目是无限的,以是实际上我们不能够罗列一切能够的树构造。一样平常状况下,我们接纳贪婪战略来天生决策树的每一个节点。

1. 从深度为 0 的树最先,对每一个叶节点罗列一切的可用特征 2. 针对每一个特征,把属于该节点的练习样本依据该特征值升序分列,经由历程线性扫描的体式格局来决议该特征的最好破裂点,并纪录该特征的最大收益(接纳最好破裂点时的收益) 3. 挑选收益最大的特征作为破裂特征,用该特征的最好破裂点作为破裂地位,把该节点生长出摆布两个新的叶节点,并为每一个新节点联系关系对应的样本集 4. 回到第 1 步,递归实行到知足特定前提为止

3.5 收益的盘算

怎样盘算每次破裂的收益呢?假定以后节点记为 C,破裂以后左孩子节点记为 L,右孩子节点记为 R,则该破裂取得的收益界说为以后节点的目的函数值减去摆布两个孩子节点的目的函数值之和:

依据等式(8) 可得:

个中,

项透露表现因为增加了树的庞杂性(该破裂增加了一个叶子节点)带来的责罚。

末了,总结一下 GBDT 的进修算法:

  1. 算法每次迭代天生一颗新的决策树 ;
  2. 在每次迭代最先之前,盘算丧失函数在每一个练习样本点的一阶导数和二阶导数 ;
  3. 经由历程贪婪战略天生新的决策树,经由历程等式(7) 盘算每一个叶节点对应的展望值
  4. 把新天生的决策树

增加到模子中:

连结简朴

易经中说道"易则易知,简则易从",就是越是浅易的器械,越是轻易被明白和取得实行。许多机械进修模子都邑只管让进修到的模子只管简朴,只管削减参数,越是简朴的模子,通用性越好,也是这个原理。

Xgboost 和 GBDT 的区分:

GBDT:

  • GBDT 它的非线性变更对照多,表达才能强,而且不须要做庞杂的特征工程和特征变更。
  • GBDT 的瑕玷也很明显,Boost 是一个串行历程,欠好并行化,而且盘算庞杂度高,同时不太合适高维希罕特征;
  • 传统 GBDT 在优化时只用到一阶导数信息。

Xgboost:

它有以下几个优秀的特征:

  1. 显现的把树模子庞杂度作为正则项加到优化目的中。
  2. 公式推导顶用到了二阶导数,用了二阶泰勒睁开。(GBDT 用牛顿法貌似也是二阶信息)
  3. 完成了破裂点寻觅近似算法。
  4. 利用了特征的希罕性。
  5. 数据事前排序而且以 block 情势存储,有利于并行盘算。
  6. 基于散布式通讯框架 rabit,可以或许运行在 MPI 和 yarn 上。(最新已不基于 rabit 了)
  7. 完成做了面向体系构造的优化,针对 cache 和内存做了机能优化。

此文已由作者受权腾讯云 社区在各渠道宣布

猎取更多新颖手艺干货,可以或许存眷我们腾讯云手艺社区-云加社区官方号及知乎机构号

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。