R - 4特征中的回归,400万个实例

时间:2011-07-13 12:20:33

标签: r linear-regression

我有一个表单中的文本文件(用户ID,电影ID,评级,时间),我想对数据集做一个vanilla回归。(只有4个功能,> 4百万个实例)

model <- glm ( UserId ~ MovieId+Ratings+Time,data=<name>) 

它出错了:

ERROR: cannot allocate 138.5MB vector . 

文件大小只有93MB。如何用R进行回归并且没有内存问题?我应该以不同方式存储数据吗?

谢谢。

更多信息:使用3GB内存的Linux机箱。我已经google了一下,但大多数链接我都谈到了通常&gt;的数据集。 RAM,在我的情况下不是真的:((仅93MB)。

3 个答案:

答案 0 :(得分:8)

biglm是专为将回归模型拟合到大型数据集而设计的软件包。

它通过逐块处理数据来工作。它需要的内存量是变量数量的函数,但不是观察数量的函数。

答案 1 :(得分:3)

所需的模型矩阵与您的数据具有相同的行数,但其中的列数大致是唯一字符串的数量(因子级别)!

因此,如果你有1000部电影将产生大约4e6x1000的双打矩阵。这大概是32 GB ......

您可以尝试单独生成模型矩阵,如下所示:

# Sample of 100 rows, 10 users, 20 movies
d <- data.frame(UserId = rep(paste('U', 10), each=10),
                MovieId=sample(paste('M', 1:20), 100, replace=T),
                Ratings=runif(100), Time=runif(100, 45, 180))
dim(d) # 100 x 4
m <- model.matrix(~ MovieId+Ratings+Time, data=d)
dim(m) # 100 x 21

答案 2 :(得分:1)

该R错误消息不是指内存总量,而是指最后一个块R试图分配并失败。您可能想尝试分析内存使用情况(Monitor memory usage in R)以查看实际情况。