R 无法分配大小为xx.x MB的向量

R 无法分配大小为xx.x MB的向量,r,regression,linear-regression,lm,R,Regression,Linear Regression,Lm,我有以下代码: library(biglm) library(ff) myData <- read.csv.ffdf(file = "myFile.csv") testData <- read.csv(file = "test.csv") form <- dependent ~ . model <- biglm(form, data=myData) predictedData <- predict(model, newdata=testData) 库(biglm

我有以下代码:

library(biglm)
library(ff)

myData <- read.csv.ffdf(file = "myFile.csv")
testData <- read.csv(file = "test.csv")
form <- dependent ~ .
model <- biglm(form, data=myData)
predictedData <- predict(model, newdata=testData)
库(biglm)
图书馆(ff)

myData以下是可能的原因和解决方案:

  • 原因:您使用的是32位R

    解决方案:使用64位R

  • 原因:你的内存太少了

    解决方案:如果可以的话,分配更多RAM(
    ?内存.限制
    )。如果你不能考虑使用<代码> FF,在<强>块/<强>中运行,运行<代码> gc-()/<代码>,或者利用云来最坏地放大。分块通常是大数据成功的关键——试着一次做10%的预测,在每次分块后将结果保存到磁盘,并在使用后删除内存中的对象

  • 原因:您的代码中有一个漏洞泄漏内存

    解决方案:修复错误——这看起来不像是您的情况,但是请确保您拥有预期大小的数据,并密切关注资源监视器程序,以确保没有发生任何有趣的事情


  • 我以前没有使用过
    biglm
    软件包。根据您所说的,在调用
    predict
    时内存不足,新数据集有近7000000行

    要解决内存问题,必须按块进行预测。例如,一次迭代预测20000行。我不确定
    predict.bigglm
    是否可以进行分块预测

    为什么不看看
    mgcv
    package
    bam
    可适用于大型数据集的线性模型/广义线性模型/广义相加模型等。类似于
    biglm
    ,它在拟合模型时执行分块矩阵分解。但是,
    predict.bam
    支持分块预测,这对您的案例非常有用。此外,它还进行并行模型拟合和模型预测,由
    并行
    包支持[使用
    bam()
    的参数
    集群
    ;有关并行示例,请参见
    ?bam
    ?predict.bam
    下的示例]

    只需执行
    library(mgcv)
    ,并选中
    ?bam
    ?predict.bam


    备注


    不要为并行性使用
    nthreads
    参数。这对于参数回归是没有用的。

    我试过使用biglm和mgcv,但记忆和因子问题很快就出现了。我在:h2o库方面取得了一些成功。

    model$rank给了我一个空值,我有6999251 rowsI版本3.3.0(2016-05-03)——“假定教育”平台:x86_64-pc-linux-gnu(64位)。您知道如何使用ff为预测向量保留数据吗?@antonio您的系统报告的RAM总量、尝试执行此操作之前的可用RAM、可用存储磁盘空间,以及它表示向量尝试分配但分配失败的大小?让我先问一下,因为如果它是xx.x MB而不是xxxx.xx MB,并且您是64位的,那么您可能只需要将内存分配增加到R,等等。