回归树的最佳决策

时间:2018-03-23 17:44:45

标签: r regression decision-tree prediction rpart

假装我已经创建了一个回归树:

library(rpart)
library(rpart.plot)
data("mtcars")
fit <- rpart(mpg~., data = mtcars)
prp(fit)

现在通过查看树,我可以理解哪些变量会使我达到最大mpg和最小值。

但是如果我有一棵大树怎么办?如何找出哪些变量值会使我获得最高结果?

1 个答案:

答案 0 :(得分:0)

如果您只想要最高或最低,这将有效。您可以使用

在每个节点获取mpg的值
fit$frame$yval
[1] 20.09062 16.64762 13.41429 18.26429 26.66364

每次节点分裂时,如果该节点有mpg = M,则两个分割节点将有一个高于M且一个低于M.因此,最大值和最小值都将出现在树的叶子上。所以最高的叶子是

max(fit$frame$yval)
[1] 26.66364

加成

抱歉,我错过了这部分问题。

通过使用which.max,我们可以确定哪个节点是最大节点。

which.max(fit$frame$yval)
[1] 5

现在我们知道它是节点5.从那里我们可以使用.list.rules.party包中的partykit来获取相关规则。由于.list.rules.party未从包中导出,因此我们必须指定函数的来源。 此外,该函数仅为叶子提供规则,因此我们必须使用 name 5获取节点的规则,而不是第5条规则。

PFit = as.party(fit)
Rules = partykit:::.list.rules.party(PFit)
Rules["5"]
        5 
"cyl < 5"

或者你可以用

简化整个事情
Rules[as.character(which.max(fit$frame$yval))]
        5 
"cyl < 5"

获取最小值的规则

Rules[as.character(which.min(fit$frame$yval))]
                       3 
"cyl >= 5 & hp >= 192.5" 
相关问题