【发布时间】:2019-01-22 17:21:48
【问题描述】:
我最近使用 R 中的 ranger 包构建了一个随机森林模型。但是,我注意到训练期间存储在 ranger 对象中的预测(可通过 model$predictions 访问)与运行预测时得到的预测不匹配使用创建的模型对同一数据集执行命令。以下代码重现了 mtcars 数据集上的问题。我创建了一个二进制变量只是为了将其转换为分类问题,尽管我也看到了与回归树相似的结果。
library(datasets)
library(ranger)
mtcars <- mtcars
mtcars$mpg2 <- ifelse(mtcars$mpg > 19.2 , 1, 0)
mtcars <- mtcars[,-1]
mtcars$mpg2 <- as.factor(mtcars$mpg2)
set.seed(123)
mod <- ranger(mpg2 ~ ., mtcars, num.trees = 20, probability = T)
mod$predictions[1,] # Probability of 1 = 0.905
predict(mod, mtcars[1,])$predictions # Probability of 1 = 0.967
这个问题也出现在 randomForest 包中,我观察到类似的问题可以用以下代码重现。
library(randomForest)
set.seed(123)
mod <- randomForest(mpg2 ~ ., mtcars, ntree = 20)
mod$votes[1,]
predict(mod, mtcars[1,], type = "prob")
谁能告诉我为什么会这样?我希望结果是一样的。我做错了什么,还是我对导致这种情况的随机森林的某些固有属性的理解有误?
【问题讨论】:
标签: r machine-learning random-forest