处理正定对称(协方差)矩阵的逆矩阵?


27

在统计数据及其各种应用中,我们经常计算协方差矩阵,该方差矩阵是正定的(在考虑的情况下)并且是对称的,用于各种用途。有时,我们需要此矩阵的逆进行各种计算(例如,以该逆为(仅)中心矩阵的二次形式)。考虑到该矩阵的质量和预期用途,我想知道:

就数值稳定性而言,逆运算的最佳计算或使用方法(一般来说是二次形式或矩阵矢量乘法)是什么?可以派上用场的一些分解?

Answers:


14

Cholesky分解C=RTR通向的Cholesky状倒数的因式分解C1=SST与上三角矩阵S=R1

在实践中,最好保持逆因式分解。如果R稀疏,则通常最好使保持S隐式,因为可以通过求解两个三角系统R T z = xR y = z来计算矩阵向量乘积y=C1xRTz=xRy=z


25

当使用协方差矩阵时,Cholesky分解对于最佳稳定性和速度最有意义,因为协方差矩阵将是正半定对称矩阵。霍尔斯基在这里很自然。但...

如果您打算计算Cholesky因式分解,请在计算协方差矩阵之前帮自己一个忙。通过计算矩阵的QR因式分解,最大程度地解决问题。(QR也很快。)也就是说,如果您将协方差矩阵计算为

C=ATA

的列均值已删除的情况下,然后看到当您形成C时,它将条件号平方。更好的方法是形成A的QR因子,而不是显式计算A T A的Cholesky分解。ACAATA

A=QR

由于Q是正交的

C=(QR)TQR=RTQTQR=RTIR=RTR

因此,我们可以直接从QR分解中以的形式获得Cholesky因子。如果Q稀少QR分解是可用的,这甚至是更好,因为你不需要Q。无Q的 QR是快速计算的,因为从不生成Q。它仅是Householderer转换的序列。(在逻辑上,以Q为中心的Q QR 列将更加稳定,以选择枢轴为代价。)RTQQQQQ

在这里使用QR的最大优点是它在棘手问题上在数值上高度稳定。同样,这是因为我们不必直接形成协方差矩阵来计算Cholesky因子。一旦形成乘积,就对矩阵的条件数求平方。实际上,您会在最初没有多少信息的那部分矩阵中丢失信息。ATA

最后,正如另一个回应指出的那样,您甚至根本不需要计算和存储逆,而可以在三角系统上以反演形式隐式使用它。


5
C1x,C1x=x,(RTR)1x=RTx2

3

我最近使用mathSE的建议进行了此操作。

我认为大多数人都推荐使用SVD,但是我选择了Cholesky的简单性:

如果矩阵,那么我使用Cholesky 将分解为三角矩阵,这样。然后,我使用反向替换或正向替换(取决于我选择L为上三角形还是下三角形)来反转,这样我就有。据此,我可以快速计算。M=AAMLM=LLLL1M1=(LL)1=LL1


从...开始:

M=AA,其中是已知的,并且是隐对称的,也是正定的。M

霍莱斯基分解:

MLL,其中是正方形且非奇异L

换人:

LL1,可能是反转的最快方法(不过请不要引用我)L

乘法:

M1=(LL)1=LL1

使用的符号: 低位索引是行,高位索引是列,是的转置LL1


我的Cholesky算法(可能来自数字食谱或维基百科)

Lij=MijMiMjMiiMiMi

这几乎可以就地完成(您只需要临时存储对角线元素,一个累加器和一些整数迭代器)。


我的替代算法(从数值食谱中检查其版本,因为我可能对LaTeX标记有误)

(L1)ij={1/Liiif i=j(Li(LT)j)/Liiotherwise

当出现在表达式中时,在矩阵上进行迭代的顺序很重要(结果矩阵的某些部分取决于必须事先计算的其他部分)。检查数字食谱代码以获取代码中的完整示例。[编辑]:实际上,只需检查数字食谱示例。通过使用点积,我已经过分简化了,以至于上述等式具有循环依赖性,无论您迭代的顺序如何...LT


2

如果您知道矩阵具有逆(即,如果确实是正定的)并且如果它不是太大,那么Cholesky分解将提供表征矩阵逆的合适方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.