我正在尝试使用软件包randomForest在R中的this large dataset上运行随机森林回归。我遇到了所需的计算时间问题,即使与doSNOW和10-20个内核并行时也是如此。我认为我误解了函数randomForest中的“ sampsize”参数。
当我将数据集子集为100,000行时,我可以在9-10秒内构建1棵树。

training = read.csv("training.csv")
t100K = sample_n(training, 100000)
system.time(randomForest(tree~., data=t100K, ntree=1, importance=T)) #~10sec


但是,当我在运行randomForest的过程中使用sampsize参数从完整数据集中采样100,000行时,同一棵1树需要花费数小时。

system.time(randomForest(tree~., data=training, sampsize = ifelse(nrow(training<100000),nrow(training), 100000), ntree=1, importance=T)) #>>100x as long. Why?


显然,我最终将运行>> 1树。我在这里想念什么?谢谢。

最佳答案

您的括号略有倾斜。请注意以下语句之间的区别。您目前有:

ifelse(nrow(mtcars<10),nrow(mtcars), 10)


它计算布尔矩阵mtcars<10中的行数,该矩阵中mtcars中的每个元素的TRUE小于10,否则为FALSE。你要:

ifelse(nrow(mtcars)<10,nrow(mtcars), 10)


希望这可以帮助。

10-06 09:20