大型超定线性方程组

计算科学 线性代数 线性求解器 矩阵 密集矩阵
2021-12-20 21:39:32

我正在寻找一种方法来解决最小二乘意义上的大型超定线性方程组。矩阵是密集的。

我想使用一种即使在内存有限的情况下也能工作的方法(我们无法在 RAM 中加载完整的矩阵)。

矩阵尺寸大约是 10,000,000 x 10,000,其中我有非常多的行和恒定数量的列。

3个回答

这里的一种选择是形成正规方程ATAx=ATb并通过结果的 Cholesky 分解来解决它们n经过n矩阵。这将问题的条件数平方,这可能是一个重要的问题。

成型B=ATA不需要超过O(n2)内存,假设您可以访问A一次一个。基本上,

B=零(n,n);

对于 i=1:m

B=B+A(i,:)'*A(i,:);

结尾

对于如此大量的行,简单地从行中随机抽样可能更合适A而不是使用整个矩阵。这当然取决于您的问题数据。

如果身体不适ATA是一个重大问题,那么您也可以考虑“Q-less”QR 分解方法,在这些方法中执行正交变换A计算R从没有计算或存储的 QR 分解Q并且您同时对最小二乘问题的右侧执行适当的正交变换。

我认为您的问题的答案称为递归最小二乘法。基本上你一个接一个地处理每一行,并且该算法基于伍德伯里矩阵恒等式来更新逆矩阵。享受 ;)

对于您感兴趣的大小问题,并行计算似乎是一个不错的选择。在并行计算中存在计算 QR(解决超定最小二乘问题的关键步骤)的算法。Mapreduce 架构是另一种可以处理您感兴趣的数据大小的架构。请参阅本文http://arxiv.org/pdf/1301.1071v1.pdf

如果您仅限于单个处理器,则可以实现 Tall skinny QR 算法。本质上,它尝试递归地计算 QR 中的“R”,并且可以通过从磁盘顺序加载矩阵的部分来应用。本文提供了详细信息http://www.netlib.org/lapack/lawnspdf/lawn204.pdf