【发布时间】:2010-07-21 15:43:24
【问题描述】:
我想计算一个巨大矩阵的Moore–Penrose pseudoinverse。理想情况下,我希望在具有 2300 万行和 1000 列的矩阵上执行此操作,但如有必要,我可以通过仅在实验的一部分上运行将行数减少到 400 万。
显然,将矩阵加载到内存中并在其上运行 SVD 是行不通的。 Wikipedia 指向 Krylov subspace 方法并提及 Arnoldi、Lanczos、Conjugate gradient、GMRES(广义最小残差)、BiCGSTAB(双共轭梯度稳定)、QMR(准最小残差)、TFQMR(转置-free QMR)和 MINRES(最小残差)方法是最好的 Krylov 子空间方法之一。但我不知道从这里去哪里。计算如此庞大的矩阵的伪逆是否可行?如果是这样,使用哪些算法或软件库?我有一个大型计算集群可用,因此欢迎使用并行方法。
This answer 指向 R 包 biglm。那行得通吗?有人用过吗?我通常使用 Python 工作,但不介意使用其他语言和工具来完成这项特定任务。
【问题讨论】:
-
矩阵有什么特殊的块结构吗?
-
@Joel:不,几乎所有元素都是非零的。
-
伪逆是最终产品还是你在用它计算什么?
-
@throwawayacct 我正在做简单的线性回归。令 X 为上述矩阵。令 K 为行数与 X 相同但列数约为 100 的矩阵。我试图找到一个矩阵 T 使 XT 近似于 K。
标签: algorithm linear-algebra hpc