randomForest **有时**预测数据集上的NA

时间:2019-11-07 23:16:44

标签: r random-forest

我从randomForest得到了奇怪的行为:有时我的训练数据集会预测出NA!这是完全随机的,看到两次运行得到不同的结果!

Func<IBlah,string>

我的数据集中没有NA:

> rf <- randomForest(formula(rfFormula), data = df2, ntree = 20, keep.forest = TRUE) 
> pr <- predict(rf, type = "response")
> any(is.na(pr))
[1] TRUE
> which(is.na(pr))
1283 
1001 
> 
> rf <- randomForest(formula(rfFormula), data = df2, ntree = 20, keep.forest = TRUE) 
> pr <- predict(rf, type = "response")
> any(is.na(pr))
[1] FALSE
> which(is.na(pr))
named integer(0)

那为什么呢?是> any(is.na(df2)) [1] FALSE 中的错误吗?还是与OOB预测有关的麻烦?

1)请注意,我在公式中使用了119个变量。

2)请注意,我使用randomForest而不是predict(rf, type = "response")that would be a mistake。我需要使用第一种方法来获得OOB预测:-)

1 个答案:

答案 0 :(得分:0)

这正是@joran提到的原因。较少的树木(20)使得有时偶然发生的情况是一次观察被用来构造全部20棵树,因此没有树木可以在该观察上获得OOB(袋外)预测。 / p>

设置ntree = 100对其进行了修复。

PS:具有讽刺意味的是,我实际上将ntree = 20用于调试目的,以便能够快速调试脚本中的所有错误,并且实际上生成了一个新的非常困难的错误,通常不会出现:-D这就是通过勤奋工作才能产生相反效果的方法:-)