我正在进行数据挖掘研究,特别是关于决策树的部分。
我想知道是否有多种构建决策树的算法(还是只有一种?),以及根据以下标准,哪一种更好:
- 性能
- 复杂度
- 决策中的错误
- 以及其他更多标准。
回答:
决策树的实现主要在以下几个方面有所不同:
-
分割标准(即如何计算“方差”)
-
是否为回归(连续变量,例如得分)以及分类(离散变量,例如类别标签)构建模型
-
消除/减少过拟合的技术
-
是否能处理不完整数据
主要的决策树实现包括:
-
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) 可以对构成训练数据的特征应用不同的权重。其中,前三个非常重要——我建议您选择的任何决策树实现都应具备这三个功能。第四个(差异加权)则不太重要
-
C5.0,Quinlan的最新迭代。此实现受专利保护,因此可能很少在(商业软件包之外)实现。我从未自己编写过C5.0的实现(我甚至从未见过源代码),因此无法提供C5.0与C4.5的有根据的比较。我一直对其发明者(Ross Quinlan)声称的改进持怀疑态度——例如,他声称它比C4.5“快几个数量级”。其他声明同样宽泛(“显著更节省内存”)等等。我只会指向研究,这些研究报告了两种技术比较的结果,您可以自己决定。
-
CHAID(卡方自动交互检测器)实际上比最初的ID3实现早了大约六年(在Gordon Kass 1980年的博士论文中发表)。我对这项技术知之甚少。R平台有一个名为CHAID的包,其中包含了出色的文档
-
MARS(多适应性回归样条)实际上是MARS的原始发明者Salford Systems注册的商标。因此,Salford未销售的库中的MARS克隆体被命名为其他名称——例如,在R中,相关函数是poly-spline库中的polymars。Matlab和Statistica也有实现MARS功能的实现
我推荐使用CART或C4.5(尽管我对C5.0或CHAID没有直接经验,但我熟悉它们的功能集)。
C4.5是Orange中实现的决策树类型;CART是sklearn中的类型——两者都是优秀的机器学习库中的优秀实现。
C4.5是ID3的一个重大进步——无论是在范围(C4.5具有更广泛的用例谱,因为它可以处理训练数据中的连续变量)还是在模型质量方面。
C5.0相对于C4.5最重要的声称改进是支持提升树。Orange中的决策树实现已包含对DT的集成支持——提升树和随机森林;在这里,集成支持被添加到C4.5算法中。sklearn还提供了一系列随机森林和提升方法。