一、算法提出时间

1966年,决策树算法起源于E.B.Hunt等人提出。

1979年,Quinlan(罗斯.昆兰)提出了ID3算法,掀起了决策树研究的高潮,让决策树成为机器学习主流算法。

1993年,Quinlan(罗斯.昆兰)提出了C4.5算法。

1995年,Freund等人提出AdaBoost算法。

1999年,Friedman在其论文中最早提出GBDT。

2001年,Breiman提出随机森林算法。

2014 年 3 月,XGBOOST 最早作为研究项目,由陈天奇提出。

2017 年 1 月,微软发布首个稳定版 LightGBM。

2017 年 4 月,俄罗斯顶尖技术公司 Yandex 开源 CatBoost。

二、树模型算法对比

模型集成学习(EL, Ensemble Learning)方法有:Bagging(装袋,各树模型独立,最后投票确定(回归则求平均)。如随机森林算法),Boosting(提升,当前树模型依赖上一个模型。如,AdaBoostGBDT及基于它的树模型),Stacking(堆叠,多个模型基础上组合一个更高层的模型。首先我们先训练多个不同的模型,然后再以之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。可能有过拟合风险,可用交叉验证法)。集成方法可以弥补弱模型的性能,但需要更多的计算和参数。对比现在的深度学习算法,Boosting 算法,在训练样本量有限、所需训练时间较短、缺乏调参知识的场景中,它们依然拥有绝对优势。因此,它们仍然是中小规模数据集上首选使用的模型。

决策树

1、ID3和C4.5是多分支的决策树,CART为二分支决策树。

2、自变量对因变量的影响程度,信息增益,基尼系数下降的越快,自变量对因变量的影响就越强。

3、基础决策树容易产生过拟合的情况,在训练集上有很好的预测精度,在测试集上效果不明显。为解决此问题,可以考虑剪枝处理或采用随机森林算法。

4、剪枝包括预剪枝后剪枝。预剪枝是在树生长过程中就进行必要的剪枝,如限制树的最大深度。后剪枝是树充分生长前提下再返工修剪。常用有误差降低剪枝法(自底向上),悲观剪枝法(自顶向下),代价复杂度剪枝法。

随机森林(RF)

1、随机森林的随机性体现在两个方面,一是每棵树的训练样本是随机的,二是树中每个节点的分裂字段也是随机选择的。

2、这里随机选择采用Bootstrap抽样法(过采样),它是有放回的抽样。从中抽取k个数据集,即k棵树,每棵树是相互独立的,最后采用投票法,将最高得票的类别用作最终判别。(集成方法为Bagging方法)

3、RF的随机抽样使得树与树之间没有太多关联性,可能导致拟合效果达到瓶颈,主要降低模型方差

AdaBoost

1、不同于RF,AdaBoost基于前一棵基础决策树对样本点设置不同的权重,如果在前一棵基础决策树中将某样本点预测错误,就会增大该样本点的权重,否则相应降低样本点的权重,进而再构建下一棵基础决策树,更加关注权重大的样本点。

2、如果将所有训练样本点带入损失函数中,一定存在一个最佳的权重和决策树,使得损失函数尽量最大化地降低。主要降低模型偏差

梯度提升决策树(GBDT)

1、梯度提升树(GBDT)为提升算法的拓展版,原始提升树中,损失函数为平方损失和指数损失,当损失函数为一般的函数(如绝对值损失,Huber损失函数),目标值的求解会相对复杂很多。

2、利用损失函数的负梯度值近似残差的计算就是GBDT的拓展,使得目标函数的求解更为方便。损失函数一阶泰勒展开

XGBoost

1、XGBoost,传统GBDT发展过来,损失函数使用了二阶泰勒展开,可以更为精准的逼近真实的损失函数。损失函数支持自定义,只需要新的损失函数二阶可导。

2、损失函数加入了正则项,用来控制模型复杂度,因而有利于模型获得更低的方差,防止过拟合。

3、支持并行计算(树之间虽然是串联的,并行是特征维度的并行,在训练之前,每个特征按特征值对样本进行预排序,并存储为block结构),支持多种类型的基分类器(比如线性分类器),支持建模字段的随机选择。

LightGBM和CatBoost则是在XGBoost基础上做了进一步的改进优化

LightGBM

1、Histogram算法。将连续的浮点型特征值离散化成K个整数。加速,且内存减少。

2、带深度限制的Leaf-wise的叶子生长策略。它是一种更为高效的策略,每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。相比XGBoost 的Level-wise不加区分的对待同一层的叶子,实际上很多叶子的分裂增益较低,它比Level-wise降低了很多没必要的开销。增加了一个最大深度的限制,在保证高效率的同时防止过拟合

3、GOSS(gradient-based one side sampling)的方法来选择训练集,梯度大的样本会直接被保留,用于下一颗树的训练,梯度较小的样本通过采样的方式来决定是否进入到下一轮的训练样本中。

CatBoost

1、CatBoost,基于boosting的梯度提升树模型框架,最大的特点对类别型(category)特征的直接支持,甚至支持字符串类型的特征。自动将类别型特征处理为数值型特征。而LightGBM中则需要指定类别特征名称,算法才可对其自动进行处理。

2、Catboost对类别特征进行组合,极大的丰富了特征维度。

3、采用排序提升的方法对抗训练集中的噪声点,从而避免梯度估计的偏差,进而解决预测偏移的问题

4、采用了完全对称树作为基模型。

不是越新的算法就是最好的,针对不同的问题,各个算法模型的表现性能可能有所不同。根据无免费午餐定理,没有一种算法能够在所有问题上都取得最好的结果。对于自己的问题,可以多尝试几个模型验证效果。

树模型:决策树、随机森林(RF)、AdaBoost、GBDT、XGBoost、LightGBM和CatBoost算法区别及联系相关推荐

  1. Python计算树模型(随机森林、xgboost等)的特征重要度及其波动程度:基于熵减的特征重要度计算及可视化、基于特征排列的特征重要性(feature permutation)计算及可视化

    Python计算树模型(随机森林.xgboost等)的特征重要度及其波动程度:基于熵减的特征重要度计算及可视化.基于特征排列的特征重要性(feature permutation)计算及可视化 目录

  2. 基于逻辑回归/决策树/随机森林/多层感知分类器/xgboost/朴素贝叶斯分类的资讯多分类性能对比

    在上一篇(https://blog.csdn.net/baymax_007/article/details/82748544)中,利用逻辑回归实现资讯多分类.本文在之前基础上,又引入决策树.随机森林. ...

  3. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法称为集成(Ensemble)学习或分类器组合(Classifier C ...

  4. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  5. python决策树 value_直播案例 | 决策树、随机森林和 AdaBoost 的 Python 实现

    获取案例链接.直播课件.数据集在本公众号内发送"机器学习". 本案例使用 Python 逐步实现了三种基于树的模型:分类回归决策树(CART).随机森林和 AdaBoost .在实 ...

  6. 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

    随机森林RF.XGBoost.GBDT和LightGBM的原理和区别 https://www.cnblogs.com/hugechuanqi/p/10554156.html

  7. ML之mlxtend:基于iris鸢尾花数据集利用逻辑回归LoR/随机森林RF/支持向量机SVM/集成学习算法结合mlxtend库实现模型可解释性(决策边界可视化)

    ML之mlxtend:基于iris鸢尾花数据集利用逻辑回归LoR/随机森林RF/支持向量机SVM/集成学习算法结合mlxtend库实现模型可解释性(决策边界可视化) 目录 相关文章 ML之mlxten ...

  8. 随机森林RF原理总结

    在集成学习原理中知道,集成学习分为两部分Bagging和Boosting.随机森林RF作为Bagging方法的典型例子,以其并行训练的优点在如今处理数据问题上广受欢迎.随机森林,顾名思义,是有多棵树组 ...

  9. 随机森林模型sklearn_Sklearn_随机森林

    一.集成算法概述 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通 过在数据上构建多个模型,集成所有模型的建模结果.基本上所有的机器 ...

最新文章

  1. Java8 HashMap实现原理探究
  2. 用Ajax 构建关键任务的企业级Web 应用 ——《深入 Ajax :架构与最佳实践》
  3. jQuery实例——展示表格点击变色、全选、删除
  4. SAP新总账 凭证分割
  5. BOM 的 变量 (技术, 生产, 销售, 计划)
  6. [云炬创业基础笔记]第六章商业模式测试1
  7. 计算机考研一定要去北上广吗,考研一定要去“北上广”吗?这几类学生可能更适合......
  8. android分享图片功能实现原理,Android:简单实现并理解图片三级缓存
  9. 【操作系统/OS笔记03】启动、中断、异常和系统调用
  10. 插入保存?展现show的顺序
  11. linux 程序崩溃 gdb调试coredump文件
  12. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查...
  13. 廖雪峰python教程杨辉三角_打印杨辉三角(廖雪峰python教程)
  14. Android项目实战系列—基于博学谷(一)项目综述
  15. 【Java从入门到精通】第九篇:##你会继承你父亲的遗产吗?##来看看Java中是如何继承的吧#
  16. 2015第二届上海国际机上内饰与翻新展览会
  17. Semantic UI学习(一、开始使用)
  18. MATLAB算法实战应用案例精讲-【图像处理】小目标检测(补充篇)(附python代码实现)
  19. LANDESK桌面管理软件
  20. inventor2五子棋游戏apk_五子棋大师2中文版游戏

热门文章

  1. C# 模式匹配完全指南
  2. 【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)
  3. 小程序添加好友的实现
  4. 亚马逊运营关于卖家收到侵权邮件怎么办?
  5. spring security logout(spring security登出示例)
  6. 解决电脑插耳机听视频暂停后继续耳机声音突然变大的问题(详细图解)
  7. 今日头条 爬虫 java_Java爬虫实践:Jsoup+HttpUnit爬取今日头条、网易、搜狐、凤凰新闻...
  8. H5图片切换,js图片轮播,js图片自动切换
  9. Python自学笔记1(think python)
  10. 开发、测试、测试开发