R glm()向量太大了

时间:2015-07-06 17:48:32

标签: r glm r-caret

我试图在一个非常大的数据集上运行R中的二进制逻辑回归。我一直遇到内存问题。我尝试了许多不同的软件包试图绕过这个问题,但我仍然陷入困境。我认为像caret和biglm这样的软件包会有所帮助。但他们给了我相同的内存错误。为什么当我从具有300,000行和300列的数据集开始并继续将其子集化为50,000行和120列时,它仍然需要相同的内存量?这没有道理。我无法复制数据,因为它是敏感信息,但大多数变量都是因素。以下是我尝试过的一些例子

model = bigglm(f, data = reg, na.action = na.pass, family = binomial(link=logit), chunksize = 5000)

但我明白了:

  

错误:无法分配大小为128.7 Gb的矢量

MyControl <- trainControl(method = "repeatedCV", index = MyFolds, summaryFunction = twoClassSummary, classProbs = TRUE)  
fit = train(f, data = reg, family = binomial, trControl = MyControl)

1 个答案:

答案 0 :(得分:0)

错误消息“错误:无法分配大小为128.7 Gb的向量”并不意味着R无法分配128.7 Gb的总内存。

引用Patrick Burns

  

“这是因为R已经成功分配了大量内存。   错误消息是关于在内存后R的内存量   它失败的地方“。

因此,您对错误的解释是错误的。即使问题的大小可能非常不同,它们可能对您的计算机来说太大了,并且错误消息中显示的内存量与您的问题大小无关。