「神经网络」能否代替「决策树算法」?

这个问题可以从几个维度来分析。但先要说明决策树就是决策树,随机森林和xgboost的性能提升主要是来自于集成学习。所以,我们扩展一下题目把对比延伸到:

单棵决策树,如比较常见的C4.5等

以决策树为基模型的集成学习算法(Ensemble Tree),如随机森林,gradient boosting,和xgboost

神经网络,包括各种深度和结构的网络

我的看法是,单棵决策树的用途已经比较有限了,已经基本被集成决策树代替。而决策树集成模型和神经网络有不同的使用场景,不存在替代一说。给出一个较为通用的看法仅供参考:

如果不强调绝对的解释度,尽量避免单棵决策树,用集成树模型

在集成数模型中,优先推荐使用xgboost

在中小数据集上,优先选择集成树模型。大数据集上推荐神经网络

在需要模型解释度的项目上,优先使用树模型

在项目时间较短的项目上,如果数据质量低(大量缺失值、噪音等),优先使用集成树模型

在硬件条件有限及机器学习知识有限的前提下,优先选择树模型

对于结构化较高的数据,尤其是语音、图片、语言,优先使用神经网络模型(往往其数据量也较大)

用个不恰当的比喻,集成树模型就像Python,而神经网络就像C++。前者简单粗暴效果好,容易上手优点多,后者比较精贵更为复杂但严肃项目上潜力很大。如果你愿意好好学习数据结构、内存分配和要命的指针,C++几乎无所不能。但如果你只打算写个简单的网络爬虫,Python十行就可以搞定。

单棵决策树 vs. 集成学习

决策树是1963年被 Morgan和Sonquist提出的[5],通过类树的结构实现分类和回归。我们一般认为决策树模型:

易于使用和解释[6],单棵的决策树很容易进行可视化和规则提取

可以自动实现特征选择[3] - 通过计算节点分裂时"不纯度的降低"(impurity reduction) 和剪枝(pruning)

预测能力有限,无法和强监督学习模型相提并论[6]

稳定性低(stability)方差高(variance),数据扰动很容易造成决策树表现有很大的变化[1, 6]

随机森林是Breiman提出的[10],模型使用集成的学习来降低单棵决策树中的高方差(high variance)从而提高了整体的预测能力。而gradient boosting machine(GBM) [9]和xgboost [8]分别是在2001年和2014年提出的。鉴于两者比较相似放在一起讨论,这两个模型:

和随机森林的并行学习(parallel learning)不同,使用串行学习(sequential learning)不断地提高的模型的表现能力降低偏差(bias)

在进行预测分类的时候非常快且对于储存空间的要求低[3]

boosting这个学习方法可以看成一种L1正则化来防止过拟合,因此模型不容易拟合[3]。Python工具库scikit-learn也提到过其不容易过拟合[2],用较多的基学习器也不碍事

单纯对比GBM和xgboost的话,它们的分类性能接近,xgboost有一个额外的正则项进一步降低过拟合。而xgboost的速度更快[4],往往更适合较大的数据集

根据各种各样实践和研究来看,随机森林、GBM和xgboost都明显优于普通的单棵决策树,所以从这个角度来看,单棵决策树可以被淘汰了。

而单棵决策树最大的护城河在于,它可以被很轻松的可视化甚至是提取规则分类规则。而集成学习在这一点是很难做到的[34]。而可解释化对于工业界很多时候是很重要的,从这个角度来看,决策树还有一点点立身之本。但这个使用的前提是,一定一定要确定决策树的表现不错(比如查看交叉验证的结果)再来可视化和规则提取,不然很有可能提取到无效甚至是错误的规则。

随机森林的作者曾经实现过可视化,但远不如决策树直观,xgboost支持单棵树的可视化。从某个角度上来看,或许对xgboost中较为可靠和稳定的单棵树进行可视化可以彻底淘汰决策树。

集成树模型 vs. 神经网络

神经网络已经是我们很熟悉的算法了,最大能力就是从复杂的数据中进行特征表示,也被认为可以近似表示任何函数(假设有特定多的node) [3],现在如此火爆的深度学习就是深度较大的神经网络的特定叫法。神经网络和集成树模型在以下几点上有较大的不同:

从数据量上来讨论:神经网络往往需要较大的数量,而小数据集上树模型有明显的优势。常常有人问,多小才算小?这也同时需要取决于特征的数量。但一般来说,几百几十个数据的情况下神经网络很难表现良好。

从特征工程角度看:神经网络需要更苛刻的数据准备工作,而树模型一般不需要以下步骤:(i) 缺失数据弥补(missing value imputation) (ii) 数据类型转化(categorical to numerical):把类别数据变为数字型 (iii) 数据缩放(data scaling):把不同范围的数据归一到[0,1]或者投射到正态分布上 (iv) 更多的参数调整:比如初始化权重,比如选择合适学习率等

从调参难度来看:集成树模型远低于神经网络。大部分的集成树模型也仅需要:(i)基学习器数量 (ii) 考虑的特征数 (iii) 最大深度 等。神经网络的调参惨剧已经没什么好说的,这点上和树模型差距非常大。

从模型解释度来看:集成树模型的解释度一般更高,比如可以自动生成特征重要性(feature importance)。神经网络的特征虽然也可以一定程度上进行分析,但不大直观。再早年间,在神经网络上使用包裹式(wrapper)方法,每次加1或者减1个特征进行特征排序也曾存在过,远不如集成树模型的嵌入式(embedded)特征选择来的方便和直观。

从模型预测能力来看:抛去调参的难度差异不提,大中型数据上的表现较为接近。随着数据量增大,神经网络的潜力越来越大

从项目周期来看:因为在各个方面神经网络都需要更多的时间,因此其需要的总时间往往远大于决策树集成,更别提还需要很好的硬件支持,如GPU。

一般来说,在小数据量多特征下,集成的树模型往往优于神经网络。随着数据量增大,两者表现趋于接近,随着数据量继续上升,神经网络的优势会逐步体现。这个跟很多答主提到的一样:随着数据量上升,对模型能力的要求增加而过拟合的风险降低,神经网络的优势终于有了用武之地而集成学习的优势降低。

总结

综上来看,大部分项目建议使用集成决策树,首推xgboost,速度快效果好用时少。特定的复杂且数据量大的项目,建议还是老老实实的为神经网络调参,拿出debug C++ pointer的精神来。

所以暂时来看,已经被替代的是单棵决策树,而集成决策树还非常重要甚至变得更为重要。在短时间内,看不到集成决策树模型被替代的可能 ʕ•ᴥ•ʔ

* 另推荐一篇有趣但有点过时的文章[7],其中对比了各种各样的算法并给出作者的分析。

原文:https://weibo.com/ttarticle/p/show?id=2309404213436883035081#_0

via:全球人工智能

End

决策树 结构_「神经网络」能否代替「决策树算法」?相关推荐

  1. 决策树 结构_决策树模型是什么?5步了解好看模型图

    在复杂的决策情况中,企业完成一个决策后,后面可能面临n种可能状态的发生,而决策树模型是基础的数学定律,它通过已知信息,通过逻辑推理,将问题中的策略,概率,风险,收益用类似于树状的形式呈现.决策出各个可 ...

  2. 决策树分类算法matlab,matlab实现的C45分类决策树算法

    <matlab实现的C45分类决策树算法>由会员分享,可在线阅读,更多相关<matlab实现的C45分类决策树算法(6页珍藏版)>请在人人文库网上搜索. 1.functionD ...

  3. 决策树 prepruning_智能建筑运维前探 AI天天见之五:决策树算法应用探索

    点击上方"蓝字"关注我们,成为幸福的人~ 这是一个大街小巷热议人工智能的时代~ 人工智能犹如上世纪九十年代的互联网,以惊涛之势席卷大江南北.带动着产业革命. 作为智慧建筑运维领域的 ...

  4. python决策树可视化_「决策树」| Part3—Python实现之可视化

    文章首发于微信公众号:AlgorithmDeveloper,专注机器学习与Python,编程与算法,还有生活. 1.前言 「决策树」| Part2-Python实现之构建决策树中我们已经可以基于给定数 ...

  5. 如何反驳「神经网络本质不过是初中生都会的复合函数」?

    来自 | 知乎 地址 | https://www.zhihu.com/question/352747514 编辑 | AI有道 本文仅作学术分享,若侵权,请联系后台删文处理 看到群里面一个人说:&qu ...

  6. 神经网络支持大脑是「预测机器」,预测是节能的

    来源:ScienceAI 编译:绿萝 我们的大脑,一个包裹在骨性头骨内的三磅重的组织,如何从感觉中产生知觉是一个长期存在的谜.大量证据和数十年的持续研究表明,大脑不能像拼拼图一样,简单地组合感官信息来 ...

  7. vue中向数组去重_「前端剑指offer第3期」来,手写一下数组去重

    数组去重一般来说就这么几种方法,理解代码,记住就好!Map.Set.reduce.filter~ 方法1 .Map 创建一个Map对象,把数组的值作为Map对象的索引,再获取所有的索引. const ...

  8. 8cm等于多少像素_「前端剑指offer第5期」物理像素、逻辑像素、CSS像素、PPI、设备像素比是什么...

    # 提问 物理像素.逻辑像素.CSS像素.PPI.设备像素比是什么? # 回答 物理像素代表屏幕上有多少个点,比如1080x2340表示屏幕一排包含1080个物理像素点. 逻辑像素表示屏幕展示物体的视 ...

  9. uos系统虚拟机_体验中兴深度联合推出的「UOS」统一操作系统

    最近国内基于Linux的「UOS」统一操作系统官网上线,并发布了UOS对外测试和开放计划.「UOS」 是由多家国内操作系统核心企业(包括中国电子集团.武汉深之度科技有限公司.南京诚迈科技.中兴新支点等 ...

最新文章

  1. Mybatis常见的面试题总结
  2. C++编程语言之Lambda 函数与表达式
  3. 数据挖掘讲座:我所知道的一点Data Mining
  4. OpenGL 重复渲染
  5. PCGen的垃圾收集分析
  6. linear在HTML的作用,CSS3里的linear-gradient()函数
  7. [vue] 怎么修改vue打包后生成文件路径?
  8. Windows下如何实现Ruby操作MongoDB(环境安装配置)
  9. 网贷大数据什么时候会好_为什么大数据待遇那么好 如何入门大数据行业
  10. 【转】一致性hash算法与server列表维护
  11. 清闲逛论坛,发个我们团队常用的开发资源整理,跟兄弟们共享
  12. 开放源代码不得不知的一些事情
  13. 引用阿里图标库(iconFont)的三种方式
  14. eve为什么服务器还在维护,EVE无法进入
  15. Linux文件群发脚本
  16. Perl的CPAN和CPANPLUS安装模块介绍
  17. python对excel筛选提取文本中数字_详解利用python提取pdf文本数字
  18. springboot 应用:异常管理,应用启动过程,应用监控 Prometheus 和 Grafana
  19. 工业机器人和PLC是什么关系
  20. 谷歌浏览器翻译修复工具

热门文章

  1. 计算机磁盘组织选项,电脑d盘怎么清理 选择常规选项然后点击磁盘清
  2. python异常-binascii.Error: Incorrect padding 报错解决
  3. 多目标优化算法:多目标白骨顶鸡优化算法MOCOOT(提供Matlab代码)
  4. android 酷炫编辑框_25个实用酷炫的Android开源UI框架
  5. python给pip修改镜像-cmd命令修改版
  6. 全志A83T平台调试MIPI DSI屏幕心得
  7. uniapp中微信小程序账号登录
  8. 信号的定义 脉冲函数与阶跃函数 脉冲分解
  9. 金仕达「2022 期货互联网转型私享会」圆满落幕
  10. 优化了一个SQL---纪念一下