首页 > 解决方案 > 使用默认的“randomForest”算法进行分类时,为什么终端节点数与案例数不匹配?

问题描述

根据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

如果有人可以解释,我会很感激

标签: random-forestdecision-tree

解决方案


“完全成长”->“没有什么可分裂的”。如果分配给它的所有数据记录都保持/做出相同的预测,则决策树(a-的节点)是完全生长的。

在 iris 数据集的情况下,一旦您到达一个包含 50 个 setosa 数据记录的节点,将其拆分为两个子节点(每个节点分别包含 25 个和 25 个 setosas)是没有意义的。


推荐阅读