有没有办法在 R 中获取用于随机森林树分类的实例?

Posted

技术标签:

【中文标题】有没有办法在 R 中获取用于随机森林树分类的实例?【英文标题】:Is there a way to get the instances used for classification in random forest tree in R? 【发布时间】:2016-05-08 13:44:56 【问题描述】:

R 中 randomForest 包中的 getTree 函数显示随机森林中使用的特定树的结构。

这是鸢尾花数据集上的示例

library(randomForest)
data(iris)
rf <- randomForest(Species ~ ., iris)
getTree(rf, 1)

这显示了 500 棵树 #1 的输出:

   left daughter right daughter split var split point status prediction
1              2              3         3        2.50      1          0
2              0              0         0        0.00     -1          1
3              4              5         4        1.65      1          0
4              6              7         4        1.35      1          0
5              8              9         3        4.85      1          0
6              0              0         0        0.00     -1          2
7             10             11         2        3.10      1          0
8             12             13         4        1.55      1          0
9              0              0         0        0.00     -1          3
10             0              0         0        0.00     -1          3
11             0              0         0        0.00     -1          2
12            14             15         2        2.55      1          0
13             0              0         0        0.00     -1          2
14            16             17         2        2.35      1          0
15             0              0         0        0.00     -1          3
16             0              0         0        0.00     -1          3
17             0              0         0        0.00     -1          2

叶子是具有 0 个叶子女儿和 0 个右女儿的节点。

有没有一种方法可以获取这些叶子中的实例(虹膜数据集的行)? 就像节点 2 一样,它是一个叶子,它有来自 iris 数据集的实例 2,3,4 都归类为 1。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

基于这个答案:

Extract a subset of tree from random forest model for prediction

可能有一个我不知道的访问功能,但以下手动方法似乎有效:

rf <- randomForest(Species ~ ., iris, keep.forest=TRUE)
pr_nodes <- attr(predict(rf, iris, nodes=TRUE),'nodes')

pr_nodes[,1] # array of 150 node assignments for 1st of 500 trees

【讨论】:

谢谢,但你能解释一下你的代码的第二行吗?什么是 attr 以及为什么要写 nodes = TRUE?如果您能稍微解释一下您的代码,那将非常有帮助。谢谢 @rmania 你会发现help(或?)函数非常有用。例如,尝试help(attr) 找出attr() 的作用,或尝试?predict 找出nodes=TRUE 的作用。我可以剪切和粘贴文档,但如果你有一个 R 控制台,它就在你面前。 不,我了解 attr 和 predict 的作用,我只想了解使用 predict 函数获取实例背后的逻辑是什么。据我所知,预测函数用于从 RF 的结果中进行预测,但它对获取实例有何帮助?对不起,如果这是一个愚蠢的问题,但我有点困惑 @C8H10N4O2 我也对此感兴趣,使用预测函数获取实例背后的逻辑是什么。 predict 函数不用于从 RF 的结果中进行预测吗?它对取回实例有何用处?

以上是关于有没有办法在 R 中获取用于随机森林树分类的实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Weka GUI 中获取随机森林生成的树模型?

决策树与随机森林

随机森林(分类与回归)

有没有办法从随机森林模型中提取树深度?

R语言 随机森林算法

随机森林原理