梯度树增强中的树大小


10

弗里德曼(Friedman)提出的梯度树增强使用具有J终端节点(= leaves)的决策树作为基础学习者。可以通过多种方式来生长具有确切J节点的树,例如,可以以深度优先或宽度优先的方式生长树...

有没有建立好的方法来生长带有完全J末端节点的树以进行梯度树增强?

我检查了R gbm包的树生长过程,似乎它以深度优先的方式扩展树,并使用基于错误改进的启发式方法选择扩展左还是右子节点-是正确的吗?


2
gbm使用CART来构建树,这是80年代众所周知的算法。启发式方法称为基尼杂质,这是二次损失回归的相当标准的选择。

2
Afaik gini杂质用于分类问题。然而,问题是树木的大小。
彼得·普雷滕霍夫2011年

一次添加一个分支。如果每个下一个拆分都是树中其余拆分候选中的最好的,而不仅仅是分支,我会感到惊讶。有时,数据不支持确切的数字-例如,数据对于'J'而言太小。
EngrStudent

正如@EngrStudent所说,您不能强制精确数量的节点。但是,您可以控制节点数的上限。gbm具有n.minobsinnode控制每个节点的最小对象数的参数。当然,节点的数量小于或等于NumberOfPoints / n.minobsinnode
G5W

如果我正在寻找“ J”叶,那么我将完全构建树,然后,假设有超过J个叶,我将修剪到J。这将给我“ J”节点,它们将是最多的信息丰富的拆分-这将是最健康的CART模型。如果没有足够的分割,我可以在域中随机分割以得到“ J”,但它们将是虚假的并且有些琐碎。我可能会研究叶子内的值分布,并使用CDF驱动的近似值,但这会偏离均叶模型。
EngrStudent

Answers:


2

R中的解决方案gbm不是典型的解决方案。

当叶子的数量受到限制时,其他软件包,例如scikit-learnLightGBM使用所谓的(在scikit-learn中)BestFirstTreeBuilder。它支持所有叶片的优先级队列,并且在每次迭代时都会分裂叶片,从而最大程度地减少杂质。因此,基于叶中的计算,它既不是深度优先也不是广度优先,而是第三种算法。

从某种意义上说,这种方法比依次盲目地分裂所有叶子更为理想。但是,它仍然是一个贪婪的启发式,因为选择是否分割了 “个节点,现在只取决于第一分割,而不是可能succesive拆分可能更降低杂质比目前的分裂。一世一世

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.