增加R的记忆

  • 本文关键字:记忆 增加 r memory
  • 更新时间 :
  • 英文 :


我正在处理一个大型数据集(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将使用所有可用内存(至少在osxlinux上)

问题的解决方案实际上非常简单,您不必牺牲分析的质量或投资于本地RAM(这可能仍然不够)。只需使用云计算服务,如亚马逊的AWS或您选择的任何提供商。

基本上,你租一台虚拟机,它有动态RAM。它可以根据需要进行扩展,我曾经使用过64Gb RAM服务器。选择Linux,安装R和库,上传数据和脚本,运行分析。如果它很快完成,整个过程将不会花费太多(很可能低于10美元)。祝你好运

最新更新