【问题标题】:Different decision tree algorithms with comparison of complexity or performance具有复杂性或性能比较的不同决策树算法
【发布时间】:2012-04-16 07:00:59
【问题描述】:

我正在研究数据挖掘,更准确地说,是决策树。

我想知道是否有多种算法可以构建决策树(还是只有一种?),根据诸如

之类的标准,哪种算法更好
  • 性能
  • 复杂性
  • 决策错误
  • 等等。

【问题讨论】:

  • 将其重新标记为分类、机器学习而不是流行语数据挖掘。

标签: performance machine-learning complexity-theory classification decision-tree


【解决方案1】:

决策树的实现主要在这些轴上有所不同:

  • 分割标准(即如何计算“方差”)

  • 是否为回归构建模型(连续变量,例如 分数)以及分类(离散变量,例如,一个类 标签)

  • 消除/减少过拟合

  • 的技术
  • 是否可以处理不完整的数据


主要的决策树实现是:

  • ID3,或迭代二分法,是三个决策树中的第一个 Ross Quinlan 开发的实现(Quinlan, J. R. 1986. Induction of Decision Trees. Mach. Learn. 1, 1 (Mar. 1986), 81-106.)

  • CART分类和回归树 通常用作泛型 术语决策树的首字母缩写词,尽管它显然具有更具体的含义。总之,CART 实现与 C4.5 非常相似;一个显着的区别是 CART 基于递归应用于数据的数值分割标准构造树,而 C4.5 包括构造规则集的中间步骤。

  • C4.5,Quinlan 的下一次迭代。新功能(相对于 ID3)是: (i) 接受连续和离散特征; (ii) 把手 不完整的数据点; (iii) 通过(非常 聪明的)自下而上的技术,通常被称为“修剪”; (iv) 不同的权重可以应用于组成的特征 训练数据。其中,前 三个 非常重要——我建议您选择的任何 DT 实现都具有这三个。第四个(差分权重)不太重要

  • C5.0,最新的 Quinlan 迭代。这个实现是 受专利保护,因此可能很少实施 (商业软件包之外)。我从未编写过 C5.0 我自己实现(我什至从未见过源代码),所以我无法提供 C5.0 与 C4.5 的知情比较。我一直 对其发明者(罗斯)声称的改进持怀疑态度 Quinlan)——例如,他声称这是“几个数量级” 比 C4.5 更快。其他声明同样广泛(“显着提高内存效率”)等等。我会指给你studies 其中报告了两种技术的比较结果,您可以自行决定。

  • CHAID(卡方自动交互检测器)实际上早于 最初的 ID3 实施大约六年(发表在 博士戈登·卡斯 1980 年的论文)。我对这项技术了如指掌。R 平台有一个名为 CHAID 的包 包括优秀的文档

  • MARS(多自适应回归样条)实际上是 MARS 的原始发明者 Salford Systems 的商标。作为一个 结果,Salford 不出售的库中的 MARS 克隆被命名为 MARS 以外的名称——例如,在 R 中,相关功能是 poly-spline 库中的 polymars。 Matlab 和 Statistica 也有 具有 MARS 功能的实现

我会推荐 CART 或 C4.5(尽管我熟悉 C5.0 或 CHAID 的功能集,但我也没有直接的经验)。

C4.5 是在Orange 中实现的决策树风格; CART 是 sklearn 中的风味——两者都是优秀 ML 库中的优秀实现。

C4.5 是超越 ID3 的重要一步——无论是在 范围(C4.5 具有更广泛的用例范围,因为它可以处理训练数据中的连续变量)和在模型质量方面

也许 C5.0 与 C4.5 相比最显着的改进是对boosted trees的支持。对 DT(增强树和随机森林)的集成支持已包含在 Orange 的 DT 实现中;在这里,集成支持被添加到 C4.5 算法中。 sklearn 还具有一系列随机森林和提升方法。

【讨论】:

  • @Youssef:没问题。 (请注意,我的原始答案包含关于 sklearn 实现的错误陈述;我在发布后检查了它,并刚刚更正了它。)
  • CART 和 ID3、C4.5、C5.0 在拆分的方式上有所不同。 CART 是一棵二叉树,而其他树则不是。这意味着 CART 将选择几个离散值进行拆分。例如,如果一个特征是 { red, green, blue },它可以在左侧的 {red, green} 和右侧的 {blue} 或 3 的任意组合上拆分。CART 也可以处理离散值和连续值.
  • CART 还支持代理拆分,它可以同时沿多个特征拆分。这产生的分割在视觉上可以被认为是任何斜坡的线,其中沿着单个要素分割会产生垂直或水平斜坡的线。这背后的想法是,当您只有垂直或水平拆分时,如果没有大量拆分,则可能无法实现集群数据。使用任何坡度的线,我们可以以更少的分割包围簇,从而使树更健壮。
  • 现在 R 可以使用 C5.0 的实现
  • @Victor 这取决于图书馆作者的选择。我只熟悉用于计算“离散”数据方差的两种技术:基尼杂质和信息熵。根据我的经验,它们之间几乎没有实际区别。当然,如果您正在构建回归树,那么您可以使用普通方差
猜你喜欢
  • 1970-01-01
  • 2018-03-03
  • 2017-10-03
  • 2015-05-29
  • 2020-08-05
  • 2020-09-18
  • 2017-06-22
  • 2014-02-24
  • 1970-01-01
相关资源
最近更新 更多