相关疑难解决方法(0)

R中随机森林的并行执行

我在R中并行运行随机森林

library(doMC)
registerDoMC()
x <- matrix(runif(500), 100)
y <- gl(2, 50)
Run Code Online (Sandbox Code Playgroud)

并行执行(耗时73秒)

rf <- foreach(ntree=rep(25000, 6), .combine=combine, .packages='randomForest') %dopar%
randomForest(x, y, ntree=ntree) 
Run Code Online (Sandbox Code Playgroud)

顺序执行(耗时82秒)

rf <- foreach(ntree=rep(25000, 6), .combine=combine) %do%
randomForest(x, y, ntree=ntree) 
Run Code Online (Sandbox Code Playgroud)

在并行执行中,树生成非常快,如3-7秒,但其余时间用于组合结果(组合选项).因此,它唯一值得运行并行执行的是树的数量真的很高.有什么方法可以调整"组合"选项,以避免在我不需要的每个节点上的任何计算,并使其更快

PS.以上只是数据的一个例子.实际上,对于大约100个观察,我有大约10万个特征.

parallel-processing r

28
推荐指数
3
解决办法
2万
查看次数

关于加快随机森林的建议

我正在使用该randomForest包进行一些工作,虽然它运行良好,但它可能非常耗时.任何人都有加快速度的建议吗?我正在使用带有双核AMD芯片的Windows 7机箱.我知道关于R不是多线程/处理器,但如果任何并行包(的好奇rmpi,snow,snowfall等)工作过randomForest的东西.谢谢.

编辑:

我正在使用rF进行一些分类工作(0和1).数据有大约8-12个可变列,训练集是10k行的样本,因此它的体积适中但不疯狂.我正在运行500棵树和2只,3只或4只.

编辑2:这是一些输出:

> head(t22)
  Id Fail     CCUse Age S-TFail         DR MonInc #OpenLines L-TFail RE M-TFail Dep
1  1    1 0.7661266  45       2 0.80298213   9120         13       0  6       0   2
2  2    0 0.9571510  40       0 0.12187620   2600          4       0  0       0   1
3  3    0 0.6581801  38       1 0.08511338   3042          2       1  0       0   0
4  4    0 0.2338098  30       0 0.03604968   3300          5       0  0       0 …
Run Code Online (Sandbox Code Playgroud)

r random-forest

22
推荐指数
4
解决办法
2万
查看次数

R: stack overflow error with randomForest on large dataset (48-512 GB RAM)

我正在R中尝试在一个广泛的遗传数据集(662 x 35350)上进行R randomForest分析.除结果外的所有变量都是数字,其中99%是二进制0/1.我对R randomForest()非常熟悉,但之前只使用过5000-10000个变量的数据集.下一个计划的分析阶段将是一个包含数百万变量的异常大的数据集,因此我有动力找到解决这个问题的方法.

我的理解是R randomForest对变量的数量没有固有的限制,我知道我已经读过10万个变量数的已发表的工作.当我尝试对完整数据集进行分析时(设置ntree = 100,我得到:"错误:protect():保护堆栈溢出"

无论数据集是数据框(如最初提供的)还是将其转换为矩阵,都是如此.当我将运行提交到集群进行并行处理时,我发现我的所有内核在执行代码时都在运行.我也看到,在任何情况下,我的RAM使用率都接近机器的限制(48 GB).在执行尝试期间,它最多会占据大约16%的RAM.(我在办公室的512 GB RAM机器上也遇到了同样的问题,它的使用率从未超过5%).

我已经尝试了在线发现的几种解决方案,包括之前的stackoverflow帖子中的一个(增加(或减少)R进程可用的内存).我尝试了BobbyShaftoe在2009年提供的说明(在快捷方式选项卡的属性中添加了--max-mem-size = 49000M和--max-vsize = 49000M),但这阻止了R正常打开.我也尝试在命令行中运行这些命令,但这些命令生成:' - max-ppsize'/' - max-vsize = 5000M"不被识别为内部或外部命令,可操作程序或批处理文件.

我还阅读了这篇文章中提出的建议:如何提高randomForest的性能?.在完成至少一次具有完整功能集的运行之前,我无法减少功能的数量.(另外,我不确定问题是RAM本身.)

我在Windows 7上运行Revolution R 7.2(64位).我的内存限制设置为49807 Mb,但我不确定memory.limit是否特定地解决了允许的保护堆栈大小.

将数据集分解为较小的变量块(确实解决了堆栈溢出问题)并不能解决分析问题.是否有关于可能允许对完整数据集进行分析的R设置的建议?

##########################################
# input DF
##########################################
object.size(inputDF) # 191083664 bytes (as matrix, size=189391088 bytes, not much smaller)
dim(inputDF) # 662 x 35350 

##########################################
#Load necessary packages into R's memory
##########################################
require(iterators)
require(foreach)
require(parallel)
require(doParallel)
require(randomForest)

###########################################
# Get the number of available logical cores
###########################################
cores …
Run Code Online (Sandbox Code Playgroud)

stack-overflow r random-forest

6
推荐指数
1
解决办法
1216
查看次数