当我将 ranger 用于分类模型并treeInfo()
提取树时,我发现有时拆分会导致两个相同的终端节点。这是预期的行为吗?为什么在最终节点相同的情况下引入拆分是有意义的?
从这个问题,我认为prediction
变量可能是多数类(尽管对于 python 和另一个随机森林实现)。游侠?treeInfo
文档说它应该是预测的类。
MWE
library(ranger)
data <- iris
data$is_versicolor <- factor(data$Species == "versicolor")
data$Species <- NULL
rf <- ranger(is_versicolor ~ ., data = data,
num.trees = 1, # no need for many trees in this example
max.depth = 3, # keep depth at an understandable level
seed = 1351, replace = FALSE)
treeInfo(rf, 1)
#> nodeID leftChild rightChild splitvarID splitvarName splitval terminal prediction
#> 1 0 1 2 2 Petal.Length 2.60 FALSE <NA>
#> 2 1 NA NA NA <NA> NA TRUE FALSE
#> 3 2 3 4 3 Petal.Width 1.75 FALSE <NA>
#> 4 3 5 6 2 Petal.Length 4.95 FALSE <NA>
#> 5 4 7 8 0 Sepal.Length 5.95 FALSE <NA>
#> 6 5 NA NA NA <NA> NA TRUE TRUE
#> 7 6 NA NA NA <NA> NA TRUE TRUE
#> 8 7 NA NA NA <NA> NA TRUE FALSE
#> 9 8 NA NA NA <NA> NA TRUE FALSE
在此示例中,最后四行(nodeID 为 5 和 6,以及 7 和 8 的最终节点)具有预测TRUE
和FALSE
。从图形上看,这看起来像这样