为什么指定sampsize不会加速randomForest?

时间:2018-03-03 16:28:38

标签: r machine-learning regression random-forest sample

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

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?

显然,我最终将运行&gt;&gt; 1树。我在这里错过了什么?感谢。

1 个答案:

答案 0 :(得分:2)

您的括号略有偏差。请注意以下语句之间的区别。你现在有:

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

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

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

希望这有帮助。