我试图在一个非常大的数据集上运行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)
答案 0 :(得分:0)
错误消息“错误:无法分配大小为128.7 Gb的向量”并不意味着R无法分配128.7 Gb的总内存。
“这是因为R已经成功分配了大量内存。 错误消息是关于在内存后R的内存量 它失败的地方“。
因此,您对错误的解释是错误的。即使问题的大小可能非常不同,它们可能对您的计算机来说太大了,并且错误消息中显示的内存量与您的问题大小无关。