在 R 的 randomForest 中,predict() 是不确定的吗?

数据挖掘 r 随机森林
2022-02-14 12:29:02

训练随机森林模型本质上是不确定的(无法控制随机数生成器),但是 predict() 也是不确定的吗?也就是说,如果我构造 randomForest (根据文档中的警告使用奇数ntree)并保存一个.rda,加载是否会在.rda给定相同输入的情况下给我相同的结果?

我尝试通过查看https://github.com/cran/randomForest自己回答这个问题,似乎 predict() 路径上没有人要求随机数,但我对 R 很陌生,而且对C 并且可能缺少一些东西。指向代码或文档的指针将不胜感激。

1个回答

除非您重新训练,否则模型不会改变。对于给定的模型,相同的输入样本应始终具有相同的输出值。更换种子,保存和重新加载等应该对结果没有影响。

训练本身确实是不确定的,预测不是。

library(randomForest)
# sample 80% of data to train
split = sample(1:nrow(iris), floor(nrow(iris) * 0.8))
df_train = iris[split,]
df_test = iris[-split,]
# rf model
mod = randomForest(Species ~ ., df_train)
# predictions
set.seed(123)
res1 = predict(mod, df_test)
set.seed(999)
res2 = predict(mod, df_test)
identical(res1, res2)