如何解决在使用默认的“ 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
如果有人能解释我会很感激
解决方法
“完全长大”->“什么都没剩下”。如果分配给它的所有数据记录都保持/做出相同的预测,则决策树的a节点将完全增长。
在虹膜数据集的情况下,一旦到达其中包含50个setosa数据记录的节点,就没有必要将其拆分为两个分别具有25个和25个setosas的子节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。