从0到1认识GBDT

作者: 章光辉_数据 | 来源:发表于2017-12-02 16:50 被阅读24次

背景音乐:Remedy - Adele

学习了两周GBDT,看了不少文章,也浅读了原论文,也拿一些数据集实战了几次。现在我把我的学习心得整理一下,欢迎随时交流。

本文适合入门,将从以下4个角度,来全面地认识GBDT:

  • What:什么是GBDT
  • Why:为什么要用GBDT
  • When:什么时候选择用GBDT
  • How:GBDT是如何工作的

最后,再总结一些使用GBDT的小tips(不定期更新)

1. What:什么是GBDT

GBDT(Gradient Boosting Decision Tree),顾名思义就是梯度提升决策树,是GBM(Gradient Boosting Machine,梯度提升机器)的一种具体实现。

GBDT = GB+DT

GB:Gradient Boosting,一种算法框架,用梯度计算拟合损失函数的提升过程。

  • G:Gradient 梯度,确切地说是Gradient Descent(梯度下降),实现层面上是用损失函数的负梯度来拟合本轮损失函数的近似值,进而拟合得到一个弱学习器。
  • B:Boosting 一种集成学习算法,通过迭代训练一系列弱学习器(每一次训练都是在前面已有模型的预测基础上进行),组合成一个强学习器,来提升回归或分类算法的精确度。

DT:Decision Tree,决策树,一种常用的用来做回归或分类的算法,可以理解成树状结构的if-else规则的集合。在这里就是上述的弱学习器了。

总结起来,所谓GBDT,就是通过迭代训练一系列决策树,其中每棵决策树拟合的是基于当前已训练好的决策树们所得到损失函数的负梯度值,然后用这些决策树来共同决策,得到最终的结果。

2. Why:为什么要用GBDT

有一个原理叫 No Free Lunch Theorems,它证明不对问题做任何假设和限定的情况下,不存在一个效果最优的算法。因此,我们采用一个算法,都是有前提的,基于这个算法相比于其他同类算法的优势所在。

那么GBDT的优势在哪里?我认为有两个方面:

  1. 特征组合和发现重要特征
    1)特征组合:
    原始特征经过GBDT转变成高维稀疏特征(GBDT的输出相当于对原始特征进行了特征组合,得到高阶特征或者说是非线性映射),然后将这些新特征作为FM(Factorization Machine)或LR(逻辑回归)的输入再次进行拟合。
    2)发现重要特征:
    由于决策树的生长过程就是不断地选择特征、分割特征,因此由大量决策树组成的GBDT具有先天的优势,可以很容易得到特征的重要度排序,且解释性很强。

业界比较出名的案例有:

  1. Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高 CTR预估(Click-Through Rate Prediction)的准确性,详见Practical Lessons from Predicting Clicks on Ads at Facebook
  2. GBDT在淘宝的搜索及预测业务上也发挥了重要作用。淘宝搜索/推荐系统背后深度强化学习与自适应在线学习的实践之路
  3. 美团也有相关的实践:即时配送的ETA问题之亿级样本特征构造实践
  1. 泛化能力强
    这里有篇知乎的文章很好地解释了这一点:为什么xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?- 于菲的回答 - 知乎
    泛化误差可以分解为两部分,偏差(bias)和方差(variance)。
    1)为了保证低偏差bias,采用了Boosting,每一步我们都会在上一轮的基础上更加拟合原数据,可以保证低偏差;
    2)为了保证低方差,采用了简单的模型,如深度很浅的决策树。
    两者结合,就能基于泛化性能相当弱的学习器构建出泛华能力很强的集成模型。

3. When:什么时候选择用GBDT

GBDT是一种监督学习算法,主要有两种使用方法:

  1. 直接使用:这时候GBDT就是一种分类或回归的算法,如果不考虑实现层面,其实用起来和逻辑回归、SVM没有什么差别。比如点击率的预测、
  2. 间接使用:GBDT可以作为基学习器,由于构造高维稀疏特征,再作为其他算法的输入,具体案例在上面已经提到了。

4. How:GBDT的实现

需要掌握的知识有:决策树梯度提升调参
每一个知识点都很重要:往深了写可以写很多,往浅了写又感觉没切中要害。
这一部分写了好久还是写不好,索性我就贴一些觉得还不错的博客,抛砖引玉了:

————————基础—————————
分类树和回归树的区别
Bagging和Boosting 概念及区别
————————GBDT—————————
Boosting Decision Tree入门教程
GBDT学习笔记
Gradient Boosting wiki
梯度提升树(GBDT)原理小结
提升树GBDT详解
GBDT详解
————————拓展阅读—————————
greedy function a gradient boosting machine
GBM)调参方法详解
机器学习各种算法怎么调参? - 城东的回答 - 知乎
机器学习算法中GBDT与Adaboost的区别与联系是什么? - 知乎
LR,gbdt,libfm这三种模型分别适合处理什么类型的特征,为了取得较好效果他们对特征有何要求? - 知乎
sklearn中的模型评估

5. 使用GBDT的一些小Tips:

2017-12-2更新:

关于调参
step 1: learning rate(学习速率,又称步长);
step 2: n_estimators(迭代次数,又称决策数的数量);
step 3: 决策树的参数:
step 3.1: max_depth(数最大深度)和 num_samples_split(最小样本分割数);
step 3.2: min_samples_leaf(叶节点最小样本数);
step 3.3:max_features(建树所用的最大特征数);
step 3.4: subsample(建树所用的子样本比例);
step 4:再降低learning rate并相应地提高n_estimators;

相关文章

  • 从0到1认识GBDT

    背景音乐:Remedy - Adele 学习了两周GBDT,看了不少文章,也浅读了原论文,也拿一些数据集实战了几次...

  • 从 0 到 1 认识从 0 到 1

    看了太多从 0 到 1 的标题了,总感觉那是在乱用流行的标题,记得这个标题是从阿里开始的,从 0 到 1 的书,活...

  • 从0到1,认识自己

    客观的认识自己,悟透自己,其实很难。 是每个人走出舒适区,从0到1 的过程。 在我来看,想要更好的认识自己,一定要...

  • 从 0 到 1 认识 Typescript

    最近这两年,有很多人都在讨论 Typescript,无论是社区还是各种文章都能看出来,整体来说正面的信息是大于负面...

  • 从0到0,从0到1。

    昨天和一客户交流,听到这么一句话,我现在的阶段勉强算0到0的阶段,到那个1的阶段还没有看到,或者说并不知道那个1在...

  • SparkSQL – 从0到1认识Catalyst

    转自:http://hbasefly.com/2017/03/01/sparksql-catalyst/ 最近想来...

  • 从1到0,0到1。

    把经历过的一切事情都归零是件很难可以做到的事情,并不会像计算器那么简单。 有时候想,如果人的大脑能像机器那样多好,...

  • 从0到1

    【阅读感悟】 书名《书都不会读,你还想成功》 听了猫叔“更好的表达课”,发现自己太差劲了,做什么事都是三分热度,不...

  • 从0到1

    1第一层境界:企业只是制造满足市场需求的产品,只要有原型,工业流水线可以让产品大量地复制生产出来。但产品有生命周期...

  • 从0到1

    1创 造性垄断就是新产品既让大众受益,又可以给创造者带来长期利润。竞争意味着大家都没有利润,产品没有实质差异,而且...

网友评论

    本文标题:从0到1认识GBDT

    本文链接:https://www.haomeiwen.com/subject/qvknbxtx.html