代码之家  ›  专栏  ›  技术社区  ›  Vebjorn Ljosa

大规模伪逆

  •  8
  • Vebjorn Ljosa  · 技术社区  · 14 年前

    我想计算 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中工作,但不介意为此特定任务使用其他语言和工具。

    1 回复  |  直到 14 年前
        1
  •  2
  •   deinst    14 年前

    与通过伪逆计算最小二乘解相比,使用直接收敛到最小二乘解的块迭代算法可能更好。见“ Applied Iterative Methods “查理·伯恩。这些算法与krylov子空间方法密切相关,但为了便于计算而进行了调整。你可以通过看第3章得到一个介绍。 preprint of another 他的书。