我必须依次解决多个最小二乘问题,也就是一个接一个。上一个问题的每个最小二乘问题只改变一行。右手边对所有人来说都是一样的。例如,问题1:||Ax-b||和问题2:||Cy-b||,其中C和A只更改一行。也就是说,这相当于从a中删除一行,并在a中包含一个新行。在解决问题2时,我也有x。有没有快速解决问题2的y的方法?
您可以使用Sherman-Morison公式。
线性回归解的关键是计算A'A
的逆。
如果b
是A
中的旧行,而a
是C
中的新行,则
C'C=A'A-bb'+aa'=A'A+(a-b)(a+b)'
这个表达式可以插入Sherman-Morison公式来计算给定的(A'A)^{-1}的(C'C)^{-1}。
不幸的是,答案可能是否定的…
改变矩阵的一行将导致矩阵的频谱完全不同。所有的特征值和特征向量都随大小和方向而变化。因此,问题1的梯度将不会保留在问题2中。您可以尝试使用问题1中的x
作为问题2中y
的初始猜测,但不能保证在优化中减少搜索时间。
然而,用强大的软件包求解线性矩阵方程并不是那么难。可以使用LU分解或QR分解来大大提高计算效率。