为什么指定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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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