百科问答小站 logo
百科问答小站 font logo



神经网络能否代替决策树算法? 第1页

  

user avatar   breaknever 网友的相关建议: 
      

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

  1. 单棵决策树,如比较常见的C4.5等
  2. 以决策树为基模型的集成学习算法(Ensemble Tree),如随机森林,gradient boosting,和xgboost
  3. 神经网络,包括各种深度和结构的网络

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

  • 如果不强调绝对的解释度,尽量避免单棵决策树,用集成树模型
  • 在集成数模型中,优先推荐使用xgboost
  • 在中小数据集上,优先选择集成树模型。大数据集上推荐神经网络
  • 在需要模型解释度的项目上,优先使用树模型
  • 在项目时间较短的项目上,如果数据质量低(大量缺失值、噪音等),优先使用集成树模型
  • 在硬件条件有限及机器学习知识有限的前提下,优先选择树模型
  • 对于结构化较高的数据,尤其是语音、图片、语言,优先使用神经网络模型(往往其数据量也较大)

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


1. 单棵决策树 vs. 集成学习

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

  1. 易于使用和解释[6],单棵的决策树很容易进行可视化和规则提取
  2. 可以自动实现特征选择[3] - 通过计算节点分裂时"不纯度的降低"(impurity reduction) 和剪枝(pruning)
  3. 预测能力有限,无法和强监督学习模型相提并论[6]
  4. 稳定性低(stability)方差高(variance),数据扰动很容易造成决策树表现有很大的变化[1, 6]

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

  1. 和随机森林的并行学习(parallel learning)不同,使用串行学习(sequential learning)不断地提高的模型的表现能力降低偏差(bias)
  2. 在进行预测分类的时候非常快且对于储存空间的要求低[3]
  3. boosting这个学习方法可以看成一种 正则化来防止过拟合,因此模型不容易拟合[3]。Python工具库scikit-learn也提到过其不容易过拟合[2],用较多的基学习器也不碍事
  4. 单纯对比GBM和xgboost的话,它们的分类性能接近,xgboost有一个额外的正则项进一步降低过拟合。而xgboost的速度更快[4],往往更适合较大的数据集

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

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

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

2. 集成树模型 vs. 神经网络

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

  1. 从数据量上来讨论:神经网络往往需要较大的数量,而小数据集上树模型有明显的优势。常常有人问,多小才算小?这也同时需要取决于特征的数量。但一般来说,几百几十个数据的情况下神经网络很难表现良好。
  2. 从特征工程角度看:神经网络需要更苛刻的数据准备工作,而树模型一般不需要以下步骤:
    1. 缺失数据弥补(missing value imputation)
    2. 数据类型转化(categorical to numerical):把类别数据变为数字型
    3. 数据缩放(data scaling):把不同范围的数据归一到[0,1]或者投射到正态分布上
    4. 更多的参数调整:比如初始化权重,比如选择合适学习率等
  3. 从调参难度来看:集成树模型远低于神经网络。大部分的集成树模型也仅需要:(i)基学习器数量 (ii) 考虑的特征数 (iii) 最大深度 等。神经网络的调参惨剧已经没什么好说的,这点上和树模型差距非常大。
  4. 从模型解释度来看:集成树模型的解释度一般更高,比如可以自动生成特征重要性(feature importance)。神经网络的特征虽然也可以一定程度上进行分析,但不大直观。再早年间,在神经网络上使用包裹式(wrapper)方法,每次加1或者减1个特征进行特征排序也曾存在过,远不如集成树模型的嵌入式(embedded)特征选择来的方便和直观。
  5. 从模型预测能力来看:抛去调参的难度差异不提,大中型数据上的表现较为接近。随着数据量增大,神经网络的潜力越来越大
  6. 从项目周期来看:因为在各个方面神经网络都需要更多的时间,因此其需要的总时间往往远大于决策树集成,更别提还需要很好的硬件支持,如GPU。

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

3. 总结

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

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

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


[1] A. Géron, Hands-on machine learning with Scikit-Learn and TensorFlow: concepts, tools, and techniques to build intelligent systems. O'Reilly Media, 2017.

[2] F. Pedregosa, G. Varoquaux, A. Gramfort, V. Michel, B. Thirion, O. Grisel, M. Blondel, P. Prettenhofer, R. Weiss, V. Dubourg and J. Vanderplas, “Scikit-learn: Machine learning in Python,” J. Mach. Learn. Res., vol. 12, pp. 2825-2830, 2011.

[3] K. P. Murphy. Machine learning: a probabilistic perspective. MIT press. 2012.

[4] R. Punnoose and P. Ajit, “Prediction of employee turnover in organizations using
machine learning algorithms,”International Journal of Advanced Research in Artificial Intelligence, vol.5, pp. 22-6, 2016.

[5] J. N. Morgan and J. A. Sonquist, “Problems in the analysis of survey data, and a
proposal,” J. AM. Stat. Assoc., vol. 58, pp. 415-434, 1963.

[6] J. Friedman, T. Hastie and R. Tibshirani, The elements of statistical learning. New York: Springer series in statistics, 2001.

[7] S. B. Kotsiantis, “Supervised Machine Learning: A Review of Classification Techniques,” Informatica, vol. 31, pp. 249-268, 2007.

[8] T. Chen and C. Guestrin, “Xgboost: A scalable tree boosting system,” in Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining, 2016, pp.785-794. ACM.
[9] H. Friedman, “Greedy function approximation: a gradient boosting machine,” Ann. Stat., pp. 1189-1232, 2001.

[10] L. Breiman, “Random forests,” Machine learning, vol. 45, pp. 5-32. 2001.




  

相关话题

  如何评价FAIR提出的ConvNeXt:CNN匹敌Swin Transformer? 
  什么是主动学习(Active Learning, AL)? 
  做底层 AI 框架和做上层 AI 应用,哪个对自己的学术水平(或综合能力)促进更大? 
  ICLR 2022有哪些值得关注的投稿? 
  有没有值得推荐的随机森林 Random Forest教材? 
  如何评价 DeepMind 发表在 Nature 的论文公开无需人类棋谱的 AlphaGo Zero? 
  为什么身边的人都想学计算机,计算机真的有那么好吗? 
  2019 年你读了哪些觉得比较好的计算机书籍? 
  机器学习中的 Bias(偏差)、Error(误差)、Variance(方差)有什么区别和联系? 
  《失控玩家》中的游戏有可能实现出来吗? 

前一个讨论
男子如厕太用力引发脑溢血,为什么会出现这一情况?哪些生活中的不良小习惯容易导致这类疾病?
下一个讨论
根据往年经验,有哪些数码好物在「双十一」优惠力度是真的大?





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利