经过一些研究,我发现解决最小二乘问题的最稳定的数值方法是通过 QR 分解。为了观察次数和它采用以下形式的参数数量:
在哪里是一个正方形上三角形和是正交的。解决方案是:
我有兴趣不断更新我的最小二乘模型 随着新数据的到来,我们可以定义添加了行和项目.
我发现它以某种方式称为秩 k 矩阵更新或与对称秩 k 更新 (SYRK) 级别 3 BLAS 有关。我找不到更多关于如何在我的 LS QR 分解中制定这个的信息。
任何想法或提示都非常受欢迎。
经过一些研究,我发现解决最小二乘问题的最稳定的数值方法是通过 QR 分解。为了观察次数和它采用以下形式的参数数量:
在哪里是一个正方形上三角形和是正交的。解决方案是:
我有兴趣不断更新我的最小二乘模型 随着新数据的到来,我们可以定义添加了行和项目.
我发现它以某种方式称为秩 k 矩阵更新或与对称秩 k 更新 (SYRK) 级别 3 BLAS 有关。我找不到更多关于如何在我的 LS QR 分解中制定这个的信息。
任何想法或提示都非常受欢迎。
SYRK我认为在这里并不重要;它只是碰巧具有相同名称“rank k update”的其他东西。
在您的情况下,您需要知道如何通过插入行来更新 QR 分解;一个很好的参考是 Golub,Van Loan,第 6.5.3 节:附加或删除行。
许多计算环境已经为您实现了它,例如,参见 Matlab's qrinsert、 Python's scipy.linalg.qr_insert、 Julia'sQRupdate.jl或这个 Fortran package。
如果您要添加很多行,那么您将需要使用 Demmel 等人,2008 年的高瘦 QR 算法 (TSQR),
https://arxiv.org/abs/0806.2159
该算法可以与 Elmroth 和 Gustavson,2000 的第 3 级 BLAS QR 算法相结合,以有效地更新每个新行块的分解。最好将新行保存到一个大块中并进行一次更新,而不是一次更新一行。
AC 实现可以在 GSL 库中找到,
https://www.gnu.org/software/gsl/doc/html/lls.html#tall-skinny-qr-tsqr-approach