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

我在R中使用randomForest包对这个大型数据集进行随机森林回归分析时遇到了问题,即使使用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行时,构建同一棵树需要几个小时。

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

显然,我最终将运行超过一棵树。我在这里遗漏了什么?谢谢。


回答:

你的括号有点问题。注意以下语句的区别。你目前有的是:

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

这会计算布尔矩阵mtcars<10TRUE的数量,该矩阵对于mtcars中每个小于10的元素标记为TRUE,否则标记为FALSE。你想要的是:

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

希望这对你有帮助。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注