我正在处理一个大型数据集(41000个观测值和22个预测变量),并试图使用以下代码拟合随机森林模型:
型号<-randomForest(as.factor(data$usvsa)~。,ntree=1000,重要性=真,+接近度=TRUE、数据=数据)。
我遇到以下错误:
Error: cannot allocate vector of size 12.7 Gb
In addition: Warning messages:
1: In matrix(0, n, n) :
Reached total allocation of 6019Mb: see help(memory.size)
2: In matrix(0, n, n) :
Reached total allocation of 6019Mb: see help(memory.size)
3: In matrix(0, n, n) :
Reached total allocation of 6019Mb: see help(memory.size)
4: In matrix(0, n, n) :
Reached total allocation of 6019Mb: see help(memory.size)
我已经阅读了R关于内存限制的帮助和这个网站,我想我需要购买12GB以上的RAM,因为我的内存限制已经设置为大约6GB的RAM(我的电脑只有6GB的内存)。但首先我想再次确认这是唯一的解决方案。我正在运行一个64位处理器和6GB RAM的Windows7。这是R会话信息:
sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] randomForest_4.6-7
loaded via a namespace (and not attached):
[1] tools_2.15.3
有什么建议吗?
引用Hal Varian的精彩论文《大数据:计量经济学的新技巧》:
如果提取的数据仍然很大,通常可以选择用于统计分析的子样本。在谷歌,例如,我发现0.1数量级的随机样本用于分析经济数据的百分比工作。
那么,如果你不使用所有的41k行和22个预测器呢?
是的,您只需要购买更多的RAM。默认情况下,R将使用所有可用内存(至少在osx
和linux
上)
问题的解决方案实际上非常简单,您不必牺牲分析的质量或投资于本地RAM(这可能仍然不够)。只需使用云计算服务,如亚马逊的AWS或您选择的任何提供商。
基本上,你租一台虚拟机,它有动态RAM。它可以根据需要进行扩展,我曾经使用过64Gb RAM服务器。选择Linux,安装R和库,上传数据和脚本,运行分析。如果它很快完成,整个过程将不会花费太多(很可能低于10美元)。祝你好运