R中glm的时间复杂度和内存限制

时间:2016-03-12 16:43:24

标签: r time-complexity glm

我想使用glm( ... , family = "binomial")对我的大数据集进行逻辑回归,该数据集有80,000,000行和125列作为data.frame。但是当我在RStudio中运行时,它只会崩溃:

所以我想知道glm()的时间复杂度是什么,以及是否有任何解决方案来处理这些数据?有人建议我尝试从命令行运行代码:这有什么不同(我试过,但似乎也没有工作)?

1 个答案:

答案 0 :(得分:0)

  1. 内存要求:R必须将整个数据集加载到内存(RAM)中。但是,您的数据集(假设条目为32位)大约为37千兆字节 - 远大于计算机上的RAM量。因此,它崩溃了。除非使用一些特殊的大数据包,否则不能将R用于此数据集,我不确定它是否可行。
  2. 还有其他语言不需要将其加载到内存中来查看它,因此这样做可能是明智之举。

    1. GLM的时间复杂度:如果N =观察数(通常为行数),p =变量数(通常是列数),对于大多数标准GLM,它是O(p ^ 3 + Np ^ 3)算法。
    2. 根据您的情况,它的时间复杂度约为10 ^ 12,但仍然几乎没有可能性,但您可能需要运行至少几天的多台现代PC。