Performance 比较复杂度或性能的不同决策树算法

Performance 比较复杂度或性能的不同决策树算法,performance,machine-learning,complexity-theory,classification,decision-tree,Performance,Machine Learning,Complexity Theory,Classification,Decision Tree,我正在研究数据挖掘,更准确地说,是决策树 我想知道是否有多个算法可以构建决策树(或者只有一个?),基于以下标准,哪一个更好 演出 复杂性 决策失误 还有更多 决策树实现主要沿以下轴不同: 分割标准(即如何计算“方差”) 是否为回归建立模型(连续变量,例如 分数)以及分类(离散变量,例如类别 标签) 消除/减少过度拟合的技术 是否能处理不完整数据 主要的决策树实现包括: ID3,或称迭代二分法,是三个决策树中的第一个 Ross Quinlan开发的实现(Quinlan,J.R.1986.

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

我想知道是否有多个算法可以构建决策树(或者只有一个?),基于以下标准,哪一个更好

  • 演出
  • 复杂性
  • 决策失误
  • 还有更多

决策树实现主要沿以下轴不同:

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

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

  • 消除/减少过度拟合的技术

  • 是否能处理不完整数据


主要的决策树实现包括:

  • ID3,或称迭代二分法,是三个决策树中的第一个 Ross Quinlan开发的实现(Quinlan,J.R.1986.决策树归纳,Mach.Learn.1,1(1986年3月),81-106.)

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

  • C4.5,昆兰的下一次迭代。新功能(与ID3相比)包括: (i) 接受连续和离散特征;(ii)手柄 数据点不完整;(iii)通过(非常有效地)解决过度装配问题 (聪明的)自下而上的技术,通常称为“修剪”;及(iv) 可以将不同的权重应用于构成特征的特征 培训数据。其中,前三个非常重要——我建议您选择的任何DT实现都有这三个。第四个(差异权重)不那么重要

  • C5.0,最近的昆兰迭代。此实现是 受专利保护,因此可能很少实施 (商业软件包之外)。我从来没有编码过C5.0 我自己实现(我甚至从未见过源代码),因此我无法提供C5.0和C4.5的详细比较。我一直 对其发明者(罗斯)声称的改进持怀疑态度 昆兰——例如,他声称这是“几个数量级” 比C4.5快。其他声明也同样宽泛(“显著提高内存效率”)等等。我给你指一下 报告两种技术的比较结果,您可以自己决定

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

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

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

C4.5是在中实现的决策树;CART是中的特色——这两种实现都是在优秀的ML库中实现的

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


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

将其重新标记为分类、机器学习,而不是时髦的数据挖掘。@Youssef:没问题。(请注意,我最初的回答包含了一个关于sklearn实现的错误陈述;我在发布后检查了它,并在刚才更正了它。)CART和ID3、C4.5、C5.0在执行拆分的方式上有所不同。CART是一个二叉树,其他树则不是。这意味着购物车将选择几个离散值进行拆分。例如,如果一个特征是{red,green,blue},它可以在左边的{red,green}和右边的{blue}上分割,或者是3个特征的任意组合。CART还处理离散值和连续值。CART还支持代理项拆分,代理项拆分将同时拆分多个功能。这将生成可视为任何坡度线的拆分,其中沿单个要素拆分将生成垂直或水平坡度线。这背后的想法是,如果没有大量的拆分,那么集群数据可能是不可能的,因为您所拥有的只是垂直或水平拆分。对于任何坡度的线条,我们都可以在更少的分割中围绕集群,从而获得更健壮的树。我想指出,C5.0(至少截至2014年2月)在GPL下是完全可用的,但单线程形式,尽管这显然不能解决任何专利许可问题,而且C5.0的实现现在可用于R