为什么决策树在计算上不昂贵?


38

《 R语言中的统计学习及其应用入门》中,作者写道,拟合决策树非常快,但这对我来说没有意义。该算法必须遍历每个特征,并以各种可能的方式对其进行划分,以找到最佳分割。对于具有观测值的数字特征,这可能会导致每个特征有n个分区。nn

我是否误解了二进制拆分的工作原理?还是有一种理由认为该算法不会花费很长时间?


1
+1问题。您可以从第15页开始查看本讲义,使用代替O N 2算法。O(N)O(N2)
Haitao Du

Answers:


40

当决策树算法适合树时,它们不会计算所有可能的树。如果他们这样做,他们将解决NP难题问题。决策树拟合算法通常在拟合过程中做出贪婪的决策-在每个阶段,它们都会优化子问题,以找到给定节点中的数据的最佳拆分,并在拟合过程中不断前进。同样,当您深入决策树时,将有较小的数据集到达给定节点,因此您将在较小的数据子集上优化分割规则。所有这些选择都是给定节点中数据的线性扫描。这样做并不复杂,但是如果您有大量观察值或大量协变量要分解,则计算可能会变得有些昂贵。但是,许多工作可以拆分并发送到不同的机器上进行工作,因此有一些方法可以扩展您的计算体系结构以进行扩展。


10
换句话说,它与二进制搜索差不多。
罗伯特·哈维

1
log2(N)

2
同意,但原则仍然成立。(这就是为什么我使用“或多或少”的原因)
Robert Harvey

2

用于构建决策树的CART和C4.5算法之间存在一些差异。例如,CART使用基尼不纯性选择特征,而C.4.5使用Shannon熵。我认为差异与答案无关,因此我不会在两者之间进行区分。

使决策树比您想象的更快的原因是:

  1. 就像其他人所说的那样,这些算法是1超前算法。他们执行局部优化。在每个分支,他们选择规则,该规则最大化/最小化他们使用的任何度量(基尼或熵)。这意味着在使用逻辑运算符(例如and会产生更好的树)的地方,他们可能会错过规则。这意味着在进行功能设计时,您应该非常小心/聪明。例如,假设您正在尝试预测人们的饮酒量,那么您可能想推荐工程师这样的人new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night)。决策树可能会错过此类规则,或者给予它们的重要性不足。
  2. X1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1
  3. 决策树可以并行化。每个节点由两个独立的分支组成。因此,在每个分支,您都有机会并行化树的创建。此外,特征选择本身也可以并行化。这就是使软件包xgboost如此之快的原因。梯度提升是顺序的,不能并行化,但是树本身可以。

1

只是为了丰富答案,

分层的轴平行决策树速度很快(CART,C4.5),但还有其他选择,例如非分层决策树或执行倾斜分区的决策树,虽然它们可能更准确,但它们却不是。如果您有兴趣,请检查以下参考(它们不是一个过分的选择)。

非层次结构:

Grubinger,T.,Zeileis,A.和Pfeiffer,K .-。,2014。Evtree:RJStat.Software 61(1),1-29中全局最优分类和回归树的进化学习。

斜裂:

1994年,Murthy,SK,Kasif,S。和Salzberg,S。,诱导倾斜决策树的系统。J.Artif。智力 Res。2(1),1-32。http://dx.doi.org/doi:10.1613/jair.63。Cantú-Paz,E.和Kamath,C.,2003年。用进化算法诱导倾斜决策树。IEEE Trans。进化 计算 7(1),54-68。http://dx.doi.org/10.1109/TEVC.2002.806857。Heath,D.,Kasif,S。和Salzberg,S.,1993。诱导决策树。J.Artif。智力 Res。2(2),1002-1007。

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.