我正在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)