【问题标题】:increasing memory in R增加 R 中的内存
【发布时间】:2013-12-28 17:01:27
【问题描述】:

我正在处理一个大型数据集(41,000 个观察值和 22 个预测变量)并尝试使用以下代码拟合随机森林模型:

模型

我遇到以下错误:

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 帮助中阅读了一些关于内存限制和本网站的内容,我认为我需要购买 12+ GB 的 RAM,因为我的 memoryLimit 已经设置为大约 6GB 的 RAM(我的计算机只有 6 GB内存)。但首先我想再次确认这是唯一的解决方案。我正在运行带有 64 位处理器和 6GB RAM 的 Windows 7。这是 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

有什么建议吗?

【问题讨论】:

  • 由于 n 相当大,如果您智能地交叉验证,您也许可以在许多可管理的数据块上进行训练和测试,而不会出现内存溢出。
  • 这种情况下的问题几乎可以肯定是您要求的 41000 x 41000 邻近矩阵,而不是森林本身。我认为,您应该能够以相对较少的麻烦在该大小的数据上运行randomForest。但是接近矩阵的实用性可能需要它建立在整个数据上。那么,您真的需要接近度吗...?
  • 谢谢!我认为你是对的,当我消除接近时它会起作用!

标签: r memory


【解决方案1】:

引用wonderful paper "Big Data: New Tricks for Econometrics" by Hal Varian:

如果提取的数据仍然很大,通常是 可以选择子样本进行统计分析。在谷歌, 例如,我发现随机样本大约为 0.1 用于分析经济数据的工作百分比。

那么,如果你不使用所有 41k 行和 22 个预测变量呢?

【讨论】:

  • 在这种情况下,我认为可能并不等于最好。人们想从数据中提取尽可能多的信息,而 41K 记录只是社会科学应用程序的正常情况,绝对不是谷歌级别的东西。当有其他选择时,没有理由为研究引入额外的不确定性。
【解决方案2】:

是的,您只需要购买更多 RAM。默认情况下,R 将使用所有可用的内存(至少在 osxlinux 上)

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2015-11-04
      相关资源
      最近更新 更多