【发布时间】:2019-11-15 20:13:37
【问题描述】:
我从 randomForest 得到了奇怪的行为:我有时会在我的训练数据集上得到预测的 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)
我的数据集中没有 NA:
> any(is.na(df2))
[1] FALSE
那是为什么呢?这是randomForest 中的错误吗?还是与 OOB 预测有关的问题?
1) 请注意,我在公式中使用了 119 个变量。
2) 请注意,我使用predict(rf, type = "response") 而不是predict(rf, df2, type = "response")、that would be a mistake。我需要使用第一种方法来获取 OOB 预测 :-)
【问题讨论】:
-
第一:你能用这个
rf <- randomForest(formula(rfFormula), data = df2, ntree = 20, keep.forest = TRUE, na.action=na.omit)试试你的代码吗?这是为了确保您确实在没有NA的情况下运行。第二:你有没有超过 53 个类别的分类变量? -
@joran 是的,就是这样!!!谢谢!具有讽刺意味的是,我实际上将
ntree = 20用于调试目的,以便能够快速调试脚本中的所有错误,并且它实际上生成了一个艰难的错误:-D 设置 ntree = 100 修复了它。 :) 随意发布它作为答案。
标签: r random-forest