如何解决一个小的最小二乘问题

计算科学 线性代数 最小二乘
2021-11-28 18:46:12

这个问题不是很深。假设我有一个小的矩形矩阵A, 行数和列数之间50-100, 分别。

给定一个右手边b, 我想解决最小二乘问题Ax=b, 即我想找到x具有范数最小残差r=bAxx在这些最小化器中具有最小规范。

由于系统很小,而且A有一个很好的广义条件数,我考虑求解正规方程AtAx=Atb相反,比如说,通过 Cholesky 分解。

在这个阶段,效率不如获得准确的解决方案重要。根据您的经验,您是否会争辩说这是一个不错的选择,而不是计算 SVD?

3个回答

我猜QR 分解比求解正规方程更好,而且比 SVD 更快。

有一些课堂笔记比较了这三种方法。

另外:这里已经讨论了超定线性系统的最小二乘解的 QR 分解

如果需要,您可以使用“半正规方程”;这里的关键是RQR分解中的因子A与 Cholesky 三角形相同(直至输入符号的变化)AA, 自从

AA=(QR)(QR)=RQQR=RR.

如果您不能或不愿意存储正交矩阵,无论是显式存储还是将其分解为 Householder 向量,这将特别方便。

简而言之,你可以解方程RRx=Ab以获得您的最小二乘解决方案。

尽管如此,没有什么比奇异值分解所提供的诊断能力更好的了。如果你负担得起,你应该使用它,除非你提前知道你的最小二乘问题总是条件良好的。

当然,去反转ATA. 该矩阵是对称且正定的,因此您也可以使用 CG 来做到这一点。或者,您可以使用 QR 等算法通过计算原始矩形矩阵的分解来解决原始问题。