每叶具有线性回归模型的回归树算法


14

简短版:我正在寻找可以构建决策树的R包,而决策树中的每个叶子都是完整的线性回归模型。AFAIK,该库rpart创建决策树,其中因变量在每个叶子中都是恒定的。是否存在rpart可以构建此类树的另一个库(或我不知道的设置)?

加长版:我正在寻找一种基于训练数据集构建决策树的算法。树中的每个决策根据自变量之一的条件将训练数据集分为两部分。树的根包含完整的数据集,并且数据集中的每一项仅包含在一个叶节点中。

该算法如下所示:

  1. 从完整的数据集开始,该数据集是树的根节点。选择这个节点,并调用它。N
  2. 在的数据上创建线性回归模型。N
  3. 如果的的线性模型比某个阈值更高,那么我们已处理完毕的,所以标记作为叶并跳转到步骤5。R2NθR2NN
  4. 尝试随机决策,然后选择在子节点中产生最佳决策: nR2
    • 选择一个随机独立变量,以及一个随机阈值θ viθi
    • 决定拆分所述数据集的Ñ成两个新节点ÑÑviθiNN^N~
    • 创建两个线性回归模型ÑÑ,并计算它们的- [R 2(它们调用ř- [R )。N^N~R2r^r~
    • 从所有这些元组v θ - [R , - [R 中,选择一个具有最大Ñ [R , - [R ) 这就产生了树一个新的决定,并ñ有两个新的子节点ññn(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. 我们已经完成了处理。选择一个尚未处理的新节点N,然后返回步骤2。如果所有节点均已处理,则算法结束。NN

这将以递归方式建立决策树,将数据分成较小的部分,并在每个部分上计算线性模型。

步骤3是退出条件,可以防止算法过度拟合。当然,还有其他可能的退出条件:

  • 出口如果的树中的深度为上述θ d Ë p ħNθdepth
  • 出口如果在数据集中小于θ d 一个小号ë Nθdataset

R包中有这样的算法吗?


4
看一看派对套餐,看看是否适合您的需求。它可以在树IIRC的节点中处理多种类型的模型。
恢复莫妮卡-G.辛普森

Answers:



8

RWeka软件包提供了许多回归方法。其中,您可以找到M5P(M5 Prime),它是基于树的回归模型,在叶子中具有线性方程。有关M5方法的更多详细信息,请参见出版物

示例代码为:

library(RWeka)
M5_model = M5P (Dep_var ~ ., data = train, control = Weka_control(N=F, M=10))
train_predicted = predict(M5_model, train)
test_predicted = predict(M5_model, test)

如果您想通过M5方法使用装袋合奏,请尝试以下操作:

M5_bag = Bagging(Dep_var ~ ., data = train, control = Weka_control(P=100, I = 100, W = list("weka.classifiers.trees.M5P", M = 4)))

要查看M5P模型的控制选项,请尝试:

WOW(M5P)

如果您想优化M5方法,可以在caret软件包中找到解决方案:

library(caret)
Optimization = train (Dep_var ~ .,data = train, method = 'M5')

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.