在回归树的叶子上使用不同的回归技术(例如线性回归)是否常见?过去一个小时我一直在寻找它,但我发现的只是在树叶上具有恒定值的实现。这是/不常见的原因吗?
叶子决策树的(非线性)线性回归
在过去的几十年里,关于这个主题的研究相当多,从 Ciampi 的开创性努力开始,然后是 Loh 的 GUIDE,然后是 Gama 的功能树或我们的基于模型的递归分区方法。@Momo对这个问题的回答给出了一个很好的概述: GLM 在回归树的终端节点中的优势?
正如您所观察到的,与简单的常数拟合树相比,相应软件的使用范围较小。部分原因可能是它更难编写 - 但也更难使用。它只需要比简单的 CART 模型更多的规格。但是软件是可用的(正如@marqram 或@Momo 之前在此处指出的:Regression tree algorithm with linear regression models in each leaf)。著名的软件包包括:
在 Weka 套件中,
M5P(M5') 用于连续响应,LMT(逻辑模型树) 用于二元响应,FT(功能树) 用于分类响应。有关详细信息,请参阅http://www.cs.waikato.ac.nz/~ml/weka/ 。前两个功能也可以通过 R 包轻松实现接口RWeka。Loh 的 GUIDE 实现可从http://www.stat.wisc.edu/~loh/guide.html免费获得二进制形式(但没有源代码)。它允许通过广泛的控制选项修改方法的细节。
我们的 MOB(基于模型的递归分区)算法可在 R 包
partykit(实现的继承者party)中获得。该mob()函数为您提供了一个通用框架,允许您指定可以轻松安装在树的节点/叶子中的新模型。方便的界面lmtree(),glmtree()结合mob()和直接可用并lm()在. 但也可以定义其他插件。例如,在https://stackoverflow.com/questions/37037445/using-mob-trees-partykit-package-with-nls-model与. 但是对于各种心理测量模型(in )和 beta 回归(in )也有“暴徒”。glm()vignette("mob", package = "partykit")mob()nls()psychotreebetareg
我认为它不是更受欢迎的是,决策树样式模型集合的许多稳健性来自于它们总是预测他们所看到的范围内的恒定值这一事实。
数据中的异常值通常只是与最后一片叶子数据中的最高/最低正常值混为一谈,不会导致奇怪的预测或抛出系数。
它们也不会像线性模型那样受到多重共线性问题的困扰。
您可能能够在实现中解决这些问题,但它可能更容易和更健壮,只需通过提升或装袋在集合中添加更多树,直到您获得所需的平滑度。
我找到了一种方法(决策树,其中叶子包含线性回归而不是平均值)。它们被称为模型树 [1],例如 weka 的 M5P[2] 算法。在 M5P 中,每个叶子都有一个线性回归。
编辑:我发现另一个包/模型做类似的事情,似乎为我的数据集提供了非常好的结果:cubist。R 中的一个实现由 cubist 包 [3] 给出。Cubist 为 M5P 添加了增强集成以及它所谓的“基于实例的校正”。
[1]:Torgo, L. 回归树叶的功能模型。在第 14 届机器学习国际会议论文集上,第 385-393 页。摩根考夫曼,1997 年。
[2]:M5P http://weka.sourceforge.net/doc.dev/weka/classifiers/trees/M5P.html
[3]:立体主义模型立体主义:基于规则和实例的回归建模https://cran.r-project.org/web/packages/Cubist/index.html