r - 使用多个 CPU,我可以使用哪些包来计算线性模型?

标签 r matrix lm

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我正在进行的项目的一部分正在确定 residuals .我正在执行 linear models .
不幸的是,我发现的软件包要么不符合要求,要么出现故障。

我已尝试为我的项目使用以下软件包。

  • lm - R 中的标准线性建模函数

    + 专业人士 -- 无

    - 缺点 - 使用标准统计库,单核,无法处理内存不足计算
  • fastLm - RcppArmadillo package 的一部分

    + pro's -- 多核

    - 缺点 - 无法处理内存不足的计算。
  • biglm - biglm package 的一部分

    + pro's -- 特别设计用于通过将数据拆分成 block 来处理内存不足的计算

    - 缺点 - 单核
  • speedlm - speedglm package 的一部分

    + pro's -- 多核,应该能够通过将数据分成 block 来处理内存不足的计算

  • 我个人使用 speedlm 遇到的一些问题,否则这将是选择的包:
  • updateWithMoreData当列包含 non-numeric data 时似乎失败了
  • 缺点 -- 没有检索 the residuals. 的默认方法


  • 谷歌搜索没有成功后,我使用以下代码尝试查找新包,尝试不同的关键字,但我似乎根本找不到任何合适的包。
    find <- findFn("linear model lm", sortby="function", maxPages = 10)
    format(find)
    

    除了我上面提到的之外,是否还有满足以下要求的线性模型包:
  • 能够使用多个 CPU 计算线性模型
  • 能够拆分数据集和 update具有数据集 block 的线性模型
  • 获取拟合值
  • 最佳答案

    线性模型的典型估计程序,例如R 用于 lm,涉及 QR decomposition这似乎(在大多数 BLAS 中;有关更多详细信息,请参见下文)本质上是一个顺序过程,因此绑定(bind)到单个内核。

    其他方法可能是多核的,但可能无法实现您的真正目标 - 更快的计算。我会注意两个。

  • 您可以探索 alternate BLASes for R .但是,正如其中所述,“多线程 BLAS 库对使用 R 的实际分析问题没有显着影响”。例如,REvolution 确实提供了 R 的修改版本,该版本在拟合某些线性模型时使用多个内核......并且在涉及向量运算的部分操作上确实可能会更快一些。见评论 one of their pages talking about the speed advantage of using a multicore BLAS并为自己评估。最终,证据将在布丁中 - 用你的现实问题尝试它,看看它是否能给你想要的东西(尽管我从现有的评论中收集到它没有)。
  • 您可以使用搜索词 stochastic gradient decent 查看结果.如果有足够的资源,该方法可能能够为您提供一个能带来速度优势的多核解决方案。

  • 顺便说一句,您在快速审查时认可为多核的两种方法在我看来并不是真正的多核。一般来说,将数据分成 block 很容易,我可能又错了,但我认为你不能并行处理这些 block 并重新组合模型......也就是说......除非你愿意做一些一般性的事情(在这种情况下,你拒绝的方法也会起作用)。

    如果您愿意有点不精确,您可能会做的一般事情是:
  • 将您的数据分成样本
  • 分别并行运行样本
  • 收集您的回归系数并将平均系数用作实际系数
  • 计算你的预测
  • 计算你的残差

  • ...但这并不能再次解决您的RAM问题-我怀疑您是否会发现足够的速度优势以使其值得您花时间。

    也可以看看:
  • How can I use multi cores processing to run glm function faster
  • 关于r - 使用多个 CPU,我可以使用哪些包来计算线性模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254837/

    相关文章:

    r - knitr:将 markdown 文件转换为 html 时找不到对象

    r - gradDescent 包和 lm 函数不同

    r - 由于相似性和 pvalues 而未定义 Coef

    r - R等价于endsWith以检查字符串列表

    r - 如何提取多个字符串的匹配部分?

    c# - 如何将文件中的矩阵读入数组

    R:矩阵乘法错误(不一致的参数)

    R:计算多个变量的行向 lm()

    css - R Shiny 中的响应式 CSS 属性

    c - 如何在C中实现一个巨大的矩阵