文档章节

xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

tantexian
 tantexian
发布于 08/19 22:49
字数 1154
阅读 13
收藏 0

问题:

用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。用RandomForest所需要的树的深度和DecisionTree一样我能理解,因为它是用bagging的方法把DecisionTree组合在一起,相当于做了多次DecisionTree一样。但是xgboost/gbdt仅仅用梯度上升法就能用6个节点的深度达到很高的预测精度,使我惊讶到怀疑它是黑科技了。请问下xgboost/gbdt是怎么做到的?它的节点和一般的DecisionTree不同吗?

 

回答:
  这是一个非常好的问题,题主对各算法的学习非常细致透彻,问的问题也关系到这两个算法的本质。这个问题其实并不是一个很简单的问题,我尝试用我浅薄的机器学习知识对这个问题进行回答。
  一句话的解释,来自周志华老师的机器学习教科书( 机器学习-周志华):Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。
  随机森林(random forest)和GBDT都是属于集成学习(ensemble learning)的范畴。集成学习下有两个重要的策略Bagging和Boosting。
  Bagging算法是这样做的:每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来。简单的多数投票一般就可以。其代表算法是随机森林。Boosting的意思是这样,他通过迭代地训练一系列的分类器,每个分类器采用的样本分布都和上一轮的学习结果有关。其代表算法是AdaBoost, GBDT。
  其实就机器学习算法来说,其泛化误差可以分解为两部分,偏差(bias)和方差(variance)。这个可由下图的式子导出(这里用到了概率论公式D(X)=E(X^2)-[E(X)]^2)。偏差指的是算法的期望预测与真实预测之间的偏差程度,反应了模型本身的拟合能力;方差度量了同等大小的训练集的变动导致学习性能的变化,刻画了数据扰动所导致的影响。这个有点儿绕,不过你一定知道过拟合。
  如下图所示,当模型越复杂时,拟合的程度就越高,模型的训练偏差就越小。但此时如果换一组数据可能模型的变化就会很大,即模型的方差很大。所以模型过于复杂的时候会导致过拟合。
  当模型越简单时,即使我们再换一组数据,最后得出的学习器和之前的学习器的差别就不那么大,模型的方差很小。还是因为模型简单,所以偏差会很大。

模型复杂度与偏差方差的关系图


  也就是说,当我们训练一个模型时,偏差和方差都得照顾到,漏掉一个都不行。


  对于Bagging算法来说,由于我们会并行地训练很多不同的分类器的目的就是降低这个方差(variance) ,因为采用了相互独立的基分类器多了以后,h的值自然就会靠近.所以对于每个基分类器来说,目标就是如何降低这个偏差(bias),所以我们会采用深度很深甚至不剪枝的决策树。


  对于Boosting来说,每一步我们都会在上一轮的基础上更加拟合原数据,所以可以保证偏差(bias),所以对于每个基分类器来说,问题就在于如何选择variance更小的分类器,即更简单的分类器,所以我们选择了深度很浅的决策树。(回答之精辟清晰)



作者:SiyueLin
链接:http://www.jianshu.com/p/005a4e6ac775

© 著作权归作者所有

共有 人打赏支持
tantexian
粉丝 203
博文 506
码字总数 728029
作品 0
成都
架构师
私信 提问
机器学习基础之 三大神器GBDT、XGBoost、LightGBM

本文主要简要的比较了常用的boosting算法的一些区别,从AdaBoost到LightGBM,包括AdaBoost,GBDT,XGBoost,LightGBM四个模型的简单介绍,一步一步从原理到优化对比。 AdaBoost原理 原始的AdaBo...

secondlieutenant
04/23
0
0
LightGBM,XGBoost被面试官刁难了?内有含泪面试经验

写在最前 LightGBM,XGBoost作为非常经典的GBDT模型,网上原理和实战代码都一大堆。但是看了几个公式,写了几行代码。是不是总觉得心里空空的。直到有一次被面试官问道。给你一堆数据,让你用...

香橙云子
08/17
0
0
随机森林(RF)、梯度提升决策树(GBDT、也叫多重累加回归树(MART))、XGBoost

随机森林(RF) 一句话概括: 多棵决策树(CART)通过 Bagging 方法组成随机森林。 参考文章: [1] [Machine Learning & Algorithm] 随机森林(Random Forest) [2] 随机森林 补充: 随机森林...

牛奶芝麻
08/17
0
0
sklearn、XGBoost、LightGBM理解与调参

本文主要是针对sklearn,XGBoost,LightGBM的官方文档阅读的一些整理,主要针对sklearn的集成方法、以及gbdt族模型的具体实现差异以及各个模型的重要参数、特点做了一个整理 sklearn集成方法 ...

dby_freedom
05/03
0
0
为什么Kaggle数据分析竞赛者偏爱XGBoost

作者介绍:Matthew Emery,加拿大数据科学家,RAP爱好者,毕业于英属哥伦比亚大学。 Email:m.emery@alumni.ubc.ca LinkedIn:https://www.linkedin.com/in/lstmemery GitHub:https://githu...

【方向】
2017/02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 请上车吧

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @2amor :分享王菲的单曲《闷》 《闷》- 王菲 手机党少年们想听歌,请使劲儿戳(这里) @開源中國周杰倫 :昨天睡觉肚子疼,妈蛋,半夜爬起来...

小小编辑
22分钟前
81
5
工作中如何做好技术积累

参考:https://tech.meituan.com/study_vs_work.html 看了这篇文章,觉得总结得非常好,因此摘抄了一些关键点,以便自己经常翻阅。 引言 在繁忙的工作中做好技术积累,构建个人核心竞争力. 在...

grace_233
33分钟前
5
0
day146-2018-11-13-英语流利阅读-待学习

5 岁“牛娃”简历给 985 精英一个暴击 Lala 2018-11-13 1.今日导读 “不要让孩子输在起跑线上”,似乎已成为了当下最流行的名句,每个身为家长或还未成为家长的人都不得不思考这句话的分量。...

飞鱼说编程
46分钟前
4
0
Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
4
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部