每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

本笔记来源于CDA DSC,L2-R语言课程所学进行的总结。

一、介绍:梯度提升树(Gradient Boost Decision Tree)

Boosting算法和树模型的结合。按次序建立多棵树,每棵树都是为了减少上一次的残差(residual),每个新的模型的建立都是为了使之前模型的残差往梯度方向减少。最后将当前得到的决策树与之前的那些决策树合并起来进行预测。

相比随机森林有更多的参数需要调整。

————————————————————————————————————————————————————————————

二、随机森林与梯度提升树(GBDT)区别

随机森林:决策树+bagging=随机森林

梯度提升树:决策树Boosting=GBDT

两者区别在于bagging boosting之间的区别,可见:

bagging

boosting

取样方式

bagging采用均匀取样

boosting根据错误率来采样

精度、准确性

相比之,较低

训练集选择

随机的,各轮训练集之前互相独立

各轮训练集的选择与前面各轮的学习结果相关

预测函数权重

各个预测函数没有权重

boost有权重

函数生成顺序

并行生成

顺序生成

应用

象神经网络这样极为消耗时间的算法,bagging可通过并行节省大量的时间开销

baging和boosting都可以有效地提高分类的准确性

baging和boosting都可以有效地提高分类的准确性

一些模型中会造成模型的退化(过拟合)

boosting思想的一种改进型adaboost方法在邮件过滤,文本分类中有很好的性能

随机森林

梯度提升树

GDBT为什么受到比赛圈、工业界的青睐:

GBDT 它的非線性變換比較多,表達能力強,而且不需要做複雜的特徵工程和特徵變換。

GBDT的優勢 首先得益於 Decision Tree 本身的一些良好特性,具體可以列舉如下:

  1. Decision Tree 可以很好的處理 missing feature,這是他的天然特性,因為決策樹的每個節點只依賴一個 feature,如果某個 feature 不存在,這顆樹依然可以拿來做決策,只是少一些路徑。像邏輯迴歸,SVM 就沒這個好處。
  2. Decision Tree 可以很好的處理各種類型的 feature,也是天然特性,很好理解,同樣邏輯迴歸和 SVM 沒這樣的天然特性。

  3. 對特徵空間的 outlier 有魯棒性,因為每個節點都是 x < ? 的形式,至於大多少,小多少沒有區別,outlier 不會有什麼大的影響,同樣邏輯迴歸和 SVM 沒有這樣的天然特性。

  4. 如果有不相關的 feature,沒什麼干擾,如果數據中有不相關的 feature,頂多這個 feature 不出現在樹的節點裏。邏輯迴歸和 SVM 沒有這樣的天然特性(但是有相應的補救措施,比如邏輯迴歸裏的 L1 正則化)。

  5. 數據規模影響不大,因為我們對弱分類器的要求不高,作為弱分類器的決策樹的深 度一般設的比較小,即使是大數據量,也可以方便處理。像 SVM 這種數據規模大的時候訓練會比較麻煩。

當然 Decision Tree 也不是毫無缺陷,通常在給定的不帶噪音的問題上,他能達到的最佳分類效果還是不如 SVM,邏輯迴歸之類的。但是,我們實際面對的問題中,往往有很大的噪音,使得 Decision Tree 這個弱勢就不那麼明顯了。而且,GBDT 通過不斷的疊加組合多個小的 Decision Tree,他在不帶噪音的問題上也能達到很好的分類效果。換句話説,通過GBDT訓練組合多個小的 Decision Tree 往往要比一次性訓練一個很大的 Decision Tree 的效果好很多。因此不能把 GBDT 理解為一顆大的決策樹,幾顆小樹經過疊加後就不再是顆大樹了,它比一顆大樹更強。

来源:梯度提升決策樹(GBDT)與XGBoost、LightGBM

—————————————————————————————————————————————————————

三、R中与决策树有关的Package

单棵决策树:rpart/tree/C50
随机森林:randomforest/ranger
梯度提升树:gbm/xgboost
树的可视化:rpart.plot

————————————————————————————————————

延伸:GDBT的局部+ 全局解释性

来自支付宝论文:深度 | 蚂蚁金服DASFAA论文带你深入了解GBDT模型

GDBT模型的解释一般来说分为全局解释性 / 局部解释性。其特点为:

第一,GBDT这种树形模型的权值存在于叶子结点上,一个叶子结点实际上是从根节点开始,由一系列特征分裂点、特征分裂值决定的一条路径,也就是一个叶节点上的分值是多个特征共同决定的;

第二,由于GBDT模型的特点,它的每一棵树拟合的都是当前的残差,同一特征在不同的树上贡献度也是不同的,因为随着残差的逐渐减小,后面的树对最后预测分值的贡献度也是更小的,因此随机森林RF(Random Forest)模型那种基于样本标签分布变化的局部解释性方案不适用于GBDT模型。

GBDT的模型可以使用PMML (Predictive Model Markup Language)的格式来记录,如图:

观察图2中的节点6、节点11和节点12,由父节点6向两个子节点前进的过程中,会对特征feat5进行判断,若其小于等于1.5则落向节点11获得0.085的预测分,否则落向节点12获得0.069的预测分。也就是在这一步的前进当中,由于特征feat5的不同,一个样本可能会获得的分值差异为Sn11 − Sn12 = 0.085 – 0.069 = 0.016,Snk表示在节点k上的得分。所以,可以通过求两个叶节点的平均值获得对节点6的分值估计,再通过自底向上回溯的方式,可以将分数回溯到所有中间节点最后到达根节点。

这样就实现了局部特征贡献度的定义,将分数分摊到各个特征上,图2示例的处理结果标识在图3当中。蓝色的分值表示中间节点获得的分值估计,边上的橙色部分表示了经过该条边时的贡献特征和贡献分值。

我们使用阿里内部基于参数服务器的GBDT分布式版本SMART(Scalable Multiple Additive Regression Tree)进行模型的训练,并记录样本在节点上的分布情况。

局部模型解释方案是对单条样本进行的,我们对大量样本输出的解释观察时,对于每一维特征存在一个贡献度的分布,我们取这个分布的中位数作为其一般衡量,它应该与全局模型解释对各个特征重要性大小的判断保持一致,分析结果如图4所示,橙色、灰色分别表示各个特征的局部、全局解释,具有我们预估的一致性,说明本文GBDT的局部解释方案较为可靠。

我们还通过人工进行具体解释案例检查,分析支付宝交易测试集,发现本文模型解释输出的高风险特征与人工判断一致,并且还能抓出一些全局重要性不高,但在特定样本中属于高风险的特征,验证了结果的可靠性和实用性。

模型解释还可以用于模型检查,通过给数据分析师一个直观解释,判断与人工归因的一致性来验证模型的效果,从而使他们相信机器学习模型。另一方面,模型解释也可以用于模型的提高,通过对漏抓、误抓样本的解释,可以对特征进行补充、修改,进而实现模型的更新迭代和效果的进一步提升。

每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

笔记︱决策树族——梯度提升树(GBDT)相关推荐

  1. 梯度提升树(GBDT)相关知识

    文章目录 前向分步算法 负梯度拟合 损失函数 分类问题 回归问题 回归问题 分类 二分类 多分类 正则化 优缺点 优点 缺点 GBDT(Gradient Boosting Decision Tree) ...

  2. 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?

    随机森林(Random Forest)和梯度提升树(GBDT)有什么区别? 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法. 随机森林是由很多 ...

  3. scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

  4. 【机器学习】集成学习之梯度提升树GBDT

    Boosting方法的核心思想是对错分类的样本给予更高关注度,也就是样本权重,在提升树中与之对应的就是残差,在梯度提升树中就是梯度了. Regression Decision Tree:回归树 回归树 ...

  5. 基于scikit-learn的梯度提升树GBDT调参学习

    写在前面 昨天学习了GBDT的基本原理及算法,关键是考虑了损失函数为一般函数的时候采用了负梯度下降的策略,并引入了残差拟合来学习叶子结点,最终得到一颗回归树.当然,纸上谈兵是没有用的,最重要的还是要把 ...

  6. 梯度提升树(GBDT)原理小结(转载)

    在集成学习值Adaboost算法原理和代码小结(转载)中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boos ...

  7. 梯度提升树(GBDT)算法超详细版本

    一.引言部分 梯度提升树(GBDT)的全称是Gradient Boosting Decision Tree,是 Boosting 算法的一种. 1. 和 AdaBoost 算法的区别: AdaBoos ...

  8. 梯度提升树GBDT的理论学习与细节补充

    1. 写在前面 今天是梯度提升树GBDT的理论学习和细节补充, 之前整理过XGBOOST和Lightgbm, 在那里面提到了GBDT, 但是只是简单的一过, 并没有关注太多GBDT的细节, 所以这次借 ...

  9. Boosting、Adaboost、AdaBoost模型的优缺点、提升树、梯度提升树GBDT

    Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT 目录 Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT Boo ...

最新文章

  1. 复习心得 JAVA异常处理
  2. 用链表生成前序二叉树
  3. rfid射频前端的主要组成部分有_rfid读写器的组成部分包括什么_rfid读写器的主要功能...
  4. atom feed_适用于Atom Feed的Spring MVC
  5. javascript---parseInt(08)或parseInt(09)转换返回0的解决办法
  6. h5滚动隐藏滚动条_这 10 个值得开启的隐藏功能,让你的 Chrome 释放更多潜力
  7. Java 重写与重载
  8. R语言:ggplot2精细化绘图——以实用商业化图表绘图为例(转)
  9. labview my_fpga开发套件下载_LabVIEW面向对象的ActorFramework(1)
  10. linux环境内存查询指令,帮助你检查Linux系统内存及其使用情况的命令
  11. (51)多路时钟复用概述
  12. 涨到5倍!从“缺芯”到“芯贵” 芯片涨价影响至啤酒、肥皂行业
  13. java 泛型 类型形参(Type Parameters) 通配符(wildcard)边界(Bound)
  14. 索引sql server_SQL Server索引操作
  15. Django配置文件常用信息
  16. Qt基于FFmpeg解码本地视频生成RGB数据
  17. android 强制锁屏app,自制力app强制锁屏
  18. 搭建容器私有创库Harbor
  19. PHP使用header实现文件下载功能
  20. 连接器是什么?连接器有什么作用?

热门文章

  1. redis 基础数据结构实现
  2. mybatis 之 parameterType=list1
  3. 对于一万条数据量使用Oracle游标,存储过程,一般查询的速度的对比
  4. input输入框只允许输入数字/ 数字+小数点/ 文字+字母/ 等解决方法
  5. 如何结合短信和邮件有效的监控网站
  6. 在centos7上使用yum安装jdk1.8
  7. 梦想旅行出席中国互联网大会 做旅游界的技术派
  8. [转载][工具]Eclipse Console 加大显示的行数,禁止弹出
  9. 使用WebViewJavascriptBridge与UIWebView交互
  10. 圆检测——最小二乘法拟合圆的推导