在《 R语言中的统计学习及其应用入门》中,作者写道,拟合决策树非常快,但这对我来说没有意义。该算法必须遍历每个特征,并以各种可能的方式对其进行划分,以找到最佳分割。对于具有观测值的数字特征,这可能会导致每个特征有n个分区。
我是否误解了二进制拆分的工作原理?还是有一种理由认为该算法不会花费很长时间?
在《 R语言中的统计学习及其应用入门》中,作者写道,拟合决策树非常快,但这对我来说没有意义。该算法必须遍历每个特征,并以各种可能的方式对其进行划分,以找到最佳分割。对于具有观测值的数字特征,这可能会导致每个特征有n个分区。
我是否误解了二进制拆分的工作原理?还是有一种理由认为该算法不会花费很长时间?
Answers:
当决策树算法适合树时,它们不会计算所有可能的树。如果他们这样做,他们将解决NP难题问题。决策树拟合算法通常在拟合过程中做出贪婪的决策-在每个阶段,它们都会优化子问题,以找到给定节点中的数据的最佳拆分,并在拟合过程中不断前进。同样,当您深入决策树时,将有较小的数据集到达给定节点,因此您将在较小的数据子集上优化分割规则。所有这些选择都是给定节点中数据的线性扫描。这样做并不复杂,但是如果您有大量观察值或大量协变量要分解,则计算可能会变得有些昂贵。但是,许多工作可以拆分并发送到不同的机器上进行工作,因此有一些方法可以扩展您的计算体系结构以进行扩展。
用于构建决策树的CART和C4.5算法之间存在一些差异。例如,CART使用基尼不纯性选择特征,而C.4.5使用Shannon熵。我认为差异与答案无关,因此我不会在两者之间进行区分。
使决策树比您想象的更快的原因是:
and
会产生更好的树)的地方,他们可能会错过规则。这意味着在进行功能设计时,您应该非常小心/聪明。例如,假设您正在尝试预测人们的饮酒量,那么您可能想推荐工程师这样的人new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night)
。决策树可能会错过此类规则,或者给予它们的重要性不足。X <= 1
X <= 1.5
X <= 2
X <= 1
X <= 1.5
xgboost
如此之快的原因。梯度提升是顺序的,不能并行化,但是树本身可以。只是为了丰富答案,
分层的轴平行决策树速度很快(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。
祝好运!