gpt4 book ai didi

r - 如何获取随机森林模型 R 中每棵树使用的 OOB 样本?

转载 作者:行者123 更新时间:2023-12-03 09:05:06 25 4
gpt4 key购买 nike

是否可以获取随机森林算法为每棵树使用的 OOB 样本?我用的是R语言。我知道随机森林算法使用几乎 66% 的数据(随机选择)来生长每棵树,并使用 34% 的数据作为 OOB 样本来测量 OOB 误差,但我不知道如何获取这些 OOB 样本每棵树?

有什么想法吗?

最佳答案

假设您使用的是randomForest包,您只需将keep.inbag参数设置为TRUE即可。

library(randomForest)
set.seed(1)
rf <- randomForest(Species ~ ., iris, keep.inbag = TRUE)

输出列表将包含一个 n × ntree 矩阵,可以通过名称 inbag 访问该矩阵。

dim(rf$inbag)
# [1] 150 500

rf$inbag[1:5, 1:3]
# [,1] [,2] [,3]
# 1 0 1 0
# 2 1 1 0
# 3 1 0 1
# 4 1 0 1
# 5 0 0 2

矩阵中的值告诉您 sample 在袋中的次数。例如,上面第 5 行第 3 列中的值 2 表示第 5 个观测值被包含在第 3 棵树的袋中两次。

作为这里的一点背景知识,样本可以多次出现在包中(因此是 2),因为默认情况下采样是通过替换完成的。

您还可以通过 replace 参数进行不替换采样。

set.seed(1)
rf2 <- randomForest(Species ~ ., iris, keep.inbag = TRUE, replace = FALSE)

现在我们可以验证,在不进行替换的情况下,任何样本最多包含一次。

# with replacement, the maximum number of times a sample is included in a tree is 7
max(rf$inbag)
# [1] 7

# without replacemnet, the maximum number of times a sample is included in a tree is 1
max(rf2$inbag)
# [1] 1

关于r - 如何获取随机森林模型 R 中每棵树使用的 OOB 样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47728851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com