GBDT和Xgboost

GBDT

英文全称:Gradient Boosting Decision Tree 。

一句话解释:以决策树为基模型(base model),以损失函数的负梯度为学习目标的boosting集成模型

这句话有三个概念:决策树,损失函数的负梯度,boosting

对第一个基本概念的解释:

决策树主流有三类ID3,C4.5,CRAT树。gbdt的基模型是CART树。

id3使用信息增益作为分裂点选择

C4.5使用信息增益比作为分裂点选择

cart树使用基尼系数作为分裂点选择

第二个基本概念的解释:

损失函数的负梯度本身是优化算法中特征权重的更新方向和大小。为什么GDDT的基模型要去拟合损失负梯度,而不是拟合y,或者拟合y- ^y?

1.GBDT整体上是拟合y的,但是每个基模型不是去拟合y,如果是的话就是bagging集成模型,比如随机森林

2.GBDT的基模型为什么不是拟合残差。将下式一阶展开,可以发现若移动负梯度是最小化损失函数的方向。

如果不考虑正则项,并且使用平方误差,拟合残差是没有问题的。在有正则项的情况下就不再是损失函数最小了。

第三个基本概念的解释:

集成模型是把若干个基模型(也称“弱学习器”)按照一定的策略组合起来,发挥1+1>2的作用。集成模型主要有三种集成策略,bagging, stacking,boosting。

Bagging集成:各个基模型训练相互独立。在回归问题中,会把各个基模型的预测取平均。在分类问题中,则使用投票策略。比如随机森林就是使用bagging模型。

stacking集成:stacking的基模型之间也是相互独立。与bagging不同的是,stacking会把基模型预测结果作为第二层模型的输入,重新预测的结果作为最终的输出。stacking的基模型在工程实践中会选择强模型。比如xgboost。而且基模型一般会选择不同类型的强模型。第二层一般会选择线性回归或者逻辑斯特回归。理论上看,stacking模型已经证明其集成结果应该“渐进等价”第一层中的最优子模型。stacking的结果有点类似于两层神经网络,只不过第一层神经元都是强模型。

boosting集成:与前两种集成模型不同的是,boosting的基模型不是相互独立的,是相关的。(不是并联,是串联)。另外boosting模型的基模型也是弱模型。boosting比较经典的三个算法:提升树模型(adaboost),梯度提升树模型(gbdt),xgboost模型。

Xgboost

Xgboost 可以拆成两部分X +gboost。gboost就是gbdt。x就是牛逼。要理解xgboost,gbdt是基础。

X体现在1.损失函数二阶展开,2.快速查找分裂点,3.强大的防止过拟合能力,4.对缺失值的处理

1.论文中有6个公式。理解起来并不难。可以手动推导试试。

2.快速查找分裂点,论文提出了两种方法,一种是精确法,一种是近似法。实际中使用的是近似法。近似法不仅快,而且在精度上与精确法相比并不差。精确法计算分列点会循环遍历每个特征和每个特征的所有值,找到可以使损失函数减小最多的分裂点。有的说是分裂后增益最大的特征和特征值。本质应该是一样的,或者说xgboost中的增益计算是

不过通过损失函数去理解,没有额外添加新的概念,更有一贯性。近似法:对每个特征按照特征值排序后,采用类似分位点选取的方式,仅仅选出常数个特征值作为该特征的候选分割点,在寻找该特征的最佳分割点时,从候选分割点中选出最优的一个。如果选择2%分为,可以选择50个分为点。这时候近似法与精确法的精度已经相差不大了。

并行查找:训练前每个特征按特征值进行排序并存储为Block结构,后面查找特征分割点时重复使用,并且支持并行查找每个特征的分割点。这也是为什么面试官可能会问xgboost为什么可以并行的原因?xgboost的并行不是建树并行,而是分离点选择时候的特征并行。

除了近似法和并行查找,xgboost在工程上还实现了CPU cache 命中优化,使用缓存预取的方法,对每个线程分配一个连续的buffer,读取每个block中样本的梯度信息并存入连续的Buffer中。


3.xgboost在防止过拟合方面也做了很多工作:上面提及的目标函数中添加了正则项;列抽样,这个在随机森林中也有;shrinkage,叶子结点输出会乘以一个shrinkage参数,减少一棵树对最终结果的影响。后边的基模型可以有更大的学习空间。

4.xgboost对缺失值的处理

将该特征值missing的样本分别分配到左叶子结点和右叶子结点,两种情形都计算一遍后,选择分裂后增益最大的那个方向(左分支或是右分支),作为预测时特征值缺失样本的默认分支方向。


最后附录一个总结较好的20道XGBoost面试题,帮助理解

https://mp.weixin.qq.com/s?__biz=MzI1MzY0MzE4Mg==&mid=2247485159&idx=1&sn=d429aac8370ca5127e1e786995d4e8ec&chksm=e9d01626dea79f30043ab80652c4a859760c1ebc0d602e58e13490bf525ad7608a9610495b3d&scene=21#wechat_redirect

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

推荐阅读更多精彩内容