高维欠定线性方程的数值解

计算科学 线性代数 线性求解器 凸优化 逆问题
2021-12-21 18:56:11

我需要解决线性回归问题

Ax=y
这是非常不确定的。我身边有106功能,但只有103方程。所以A是一个1,000×1,000,000矩阵和y长度向量1,000,两者都给出,我需要找到x(长度1,000,000)。

解决方案当然是x=Ay在哪里A是伪逆。x最小化最小二乘表达式(Axy)T(Axy).

所有这一切都是众所周知的,我可以使用标准库(例如)非常有效地做到这lstsq一点numpy问题是我想添加形式的正则化项

minx{(Axy)T(Axy)+xTRx}
在哪里R是一些106×106我拥有的矩阵(它当然非常稀疏)。这个方程的解析解是

x=(ATA+R)y ,
但即使实例化矩阵也是完全不切实际的ATA+R(一个106×106矩阵)。以数值稳定的方式获得解的最佳方法是什么?如果这有帮助,我知道如何表达R作为R=BTB其中 b 是一个形状相同的矩阵A.

--- Preemtive apology:: 我意识到这可能是一个非常基本的问题,但我在我使用的任何包(scikit 等)中都找不到标准的方法。我也知道当R是恒等式这是通常的 Tikhonov 正则化,并且有一个评估技巧AAT代替ATA,但我不确定该技巧是否适用于任意R.

1个回答

你想最小化

minAxy22+xTBTBx=Axy22+Bx22

回顾

u22+v22=[uv]22.

因此你的问题可以写成

minHxg22

在哪里

H=[AB]

g=[y0].

在使用迭代算法(例如 LSQR)来解决最小二乘问题时,您需要能够计算形式的乘积

w=Hv.

这可以作为

w=[AvBv].

同样,您需要能够计算形式的产品

v=HTv.

这可以作为

v=[ATBT]w.