使用默认的'randomForest'算法进行分类时,为什么终端节点数与案例数不匹配?
when using the default 'randomForest' algorithm for classification, why doesn't the number of terminal nodes match the number of cases?
根据https://cran.r-project.org/web/packages/randomForest/randomForest.pdf,分类树完全生长,意味着节点大小= 1。
但是,如果树真的长到最大,那么每个终端节点不应该包含一个案例(数据点、物种等)吗?
如果我 运行:
library(randomForest)
data(iris) #150 cases
set.seed(352)
rf <- randomForest(Species ~ ., iris)
hist(treesize(rf),main ="number of nodes")
我可以看到大多数“完全成长”的树只有大约 10 个节点,这意味着节点大小不能等于 1...对吗?
例如,下面的(-1)表示森林中第134棵树的终端节点。只有8个终端节点!?
> getTree(rf,134)
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.75 1 0
4 6 7 3 4.95 1 0
5 8 9 3 4.85 1 0
6 10 11 4 1.60 1 0
7 12 13 1 6.50 1 0
8 14 15 1 5.95 1 0
9 0 0 0 0.00 -1 3
10 0 0 0 0.00 -1 2
11 0 0 0 0.00 -1 3
12 0 0 0 0.00 -1 3
13 0 0 0 0.00 -1 2
14 0 0 0 0.00 -1 2
15 0 0 0 0.00 -1 3
如果有人能解释一下,我将不胜感激
“完全成熟”->“没有什么可以分裂的了”。如果分配给它的所有数据记录hold/make相同的预测,则(a-的节点)决策树完全增长。
在鸢尾花数据集的情况下,一旦您到达一个包含 50 个 setosa 数据记录的节点,将其拆分为两个分别具有 25 和 25 个 setosas 的子节点是没有意义的。
根据https://cran.r-project.org/web/packages/randomForest/randomForest.pdf,分类树完全生长,意味着节点大小= 1。 但是,如果树真的长到最大,那么每个终端节点不应该包含一个案例(数据点、物种等)吗? 如果我 运行:
library(randomForest)
data(iris) #150 cases
set.seed(352)
rf <- randomForest(Species ~ ., iris)
hist(treesize(rf),main ="number of nodes")
我可以看到大多数“完全成长”的树只有大约 10 个节点,这意味着节点大小不能等于 1...对吗?
例如,下面的(-1)表示森林中第134棵树的终端节点。只有8个终端节点!?
> getTree(rf,134)
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.75 1 0
4 6 7 3 4.95 1 0
5 8 9 3 4.85 1 0
6 10 11 4 1.60 1 0
7 12 13 1 6.50 1 0
8 14 15 1 5.95 1 0
9 0 0 0 0.00 -1 3
10 0 0 0 0.00 -1 2
11 0 0 0 0.00 -1 3
12 0 0 0 0.00 -1 3
13 0 0 0 0.00 -1 2
14 0 0 0 0.00 -1 2
15 0 0 0 0.00 -1 3
如果有人能解释一下,我将不胜感激
“完全成熟”->“没有什么可以分裂的了”。如果分配给它的所有数据记录hold/make相同的预测,则(a-的节点)决策树完全增长。
在鸢尾花数据集的情况下,一旦您到达一个包含 50 个 setosa 数据记录的节点,将其拆分为两个分别具有 25 和 25 个 setosas 的子节点是没有意义的。