我正在使用大型数据集(41,000个观测值和22个预测变量)并尝试使用此代码拟合随机森林模型:
model< - randomForest(as.factor(data $ usvsa)〜。,ntree = 1000,importance = TRUE, + proximity = TRUE,data = data)。
我遇到了以下错误:
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 RAM)。但首先我想仔细检查这是唯一的解决方案。我正在运行带有64位处理器和6GB RAM的Windows 7。这是R sessionInfo:
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
任何提示?
答案 0 :(得分:2)
引用wonderful paper "Big Data: New Tricks for Econometrics" by Hal Varian:
如果提取的数据仍然不方便,通常是 可以选择子样本进行统计分析。在Google, 例如,我发现随机样本的数量级为0.1 用于分析经济数据的百分比。
那么如果你不使用所有41k行和22个预测变量呢?
答案 1 :(得分:1)
是的,您只需购买更多内存。默认情况下,R将使用可用的所有内存(至少在osx
和linux
上)
答案 2 :(得分:1)
您的问题的解决方案实际上非常简单,您不必牺牲分析的质量或投资本地RAM(这仍然可能不足)。只需使用云计算服务,例如亚马逊的AWS或您选择的任何提供商。
基本上,您租用的是具有动态RAM的虚拟机。它可以根据需要进行扩展,我一直在使用64Gb RAM服务器。选择Linux,安装R和库,上传数据和脚本,运行分析。如果它快速完成,整个过程将不会花费太多(最有可能低于10美元)。祝你好运!