我从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预测:-)
答案 0 :(得分:0)
这正是@joran提到的原因。较少的树木(20)使得有时偶然发生的情况是一次观察被用来构造全部20棵树,因此没有树木可以在该观察上获得OOB(袋外)预测。 / p>
设置ntree = 100
对其进行了修复。
PS:具有讽刺意味的是,我实际上将ntree = 20
用于调试目的,以便能够快速调试脚本中的所有错误,并且实际上生成了一个新的非常困难的错误,通常不会出现:-D这就是通过勤奋工作才能产生相反效果的方法:-)