algorithm - 大规模伪逆

标签 algorithm linear-algebra hpc

我想计算 Moore–Penrose pseudoinverse一个巨大的矩阵。理想情况下,我想在具有 2300 万行和 1000 列的矩阵上执行此操作,但如有必要,我可以通过仅在实验的一部分上运行来将行数减少到 400 万。

显然,将矩阵加载到内存中并在其上运行 SVD 是行不通的。 Wikipedia指向 Krylov subspace方法并提到 Arnoldi , Lanczos , Conjugate gradient , GMRES (广义最小残差)、BiCGSTAB(双共轭梯度稳定)、QMR(准最小残差)、TFQMR(无转置 QMR)和 MINRES(最小残差)方法是最好的 Krylov 子空间方法之一。但我不知道从这里去哪里。计算如此巨大的矩阵的伪逆是否可行?如果是这样,使用哪些算法或软件库?我有一个可用的大型计算集群,因此欢迎使用并行方法。

This answer指向 R 包 biglm .那行得通吗?有人用过吗?我通常使用 Python 工作,但不介意使用其他语言和工具来完成这项特定任务。

最佳答案

与通过伪逆计算最小二乘解相比,使用直接收敛到最小二乘解的 block 迭代算法可能更好。参见 Charlie Byrne 的“Applied Iterative Methods”。这些算法与 Krylov 子空间方法密切相关,但经过调整以便于计算。您可以通过查看此 preprint of another 的第 3 章获得介绍。他的书。

关于algorithm - 大规模伪逆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3301138/

相关文章:

算法和递归帮助?

algorithm - 从第一性原理分析 QuickSort 的复杂性

r - 矩阵用一填充零行

algorithm - 如何获得每个有效点的法线向量?

filesystems - 什么是 HPC 中的暂存空间/文件系统

r - 从多个节点检测核心

c# - 按后续负数的数量对数组的(先前)元素进行分组

iphone - 确定给定字符串中是否出现单字子串的最佳算法是什么

julia - 在稀疏矩阵和密集向量 Julia 上使用反斜杠运算符时出错

matlab - MATLAB 中阈值内的最小二乘最小化