【问题标题】:Best decision for regression tree回归树的最佳决策
【发布时间】:2018-09-02 11:31:16
【问题描述】:

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

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

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

但是如果我有一棵大树呢?如何找出哪些变量值会导致我获得最高结果?

【问题讨论】:

  • “最高结果”是什么意思?最佳精度?还是您想学习如何阅读树状图?
  • 我的完美结果是。为了使 mpg 尽可能高,cyl ==4 和 wt >= 20,或类似的东西。

标签: r regression decision-tree prediction rpart


【解决方案1】:

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

在每个节点上获取 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。从那里我们可以使用 partykit 包中的 .list.rules.party 来获取相关规则。由于.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" 

【讨论】:

  • 谢谢。但是现在如何,知道最高节点来找出方程应该是什么。像 cyl == 4 & wt >= 20。
  • 添加回答。
猜你喜欢
  • 2020-03-03
  • 2016-07-08
  • 1970-01-01
  • 2019-12-23
  • 2016-05-05
  • 2018-08-18
  • 2018-03-01
  • 2011-07-29
  • 2017-06-01
相关资源
最近更新 更多