马哈拉诺比斯距离反演协方差矩阵

Ata*_*xia 8 c algorithm matrix linear-algebra

我正在编写一个函数来获取两个向量之间的Mahalanobis距离.我知道这是使用等式a'*C ^ -1*b实现的,其中a和b是向量而C是协方差矩阵.我的问题是,有没有一种有效的方法来找到矩阵的逆矩阵而不使用Gauss-Jordan消除,或者没有办法解决这个问题?我正在寻找一种方法来做到这一点,而不是任何预定义的功能.

我知道C是一个Hermitian,正定矩阵,所以有什么方法可以算法利用这个事实吗?或者是否有一些聪明的方法计算马哈拉诺比斯距离而不计算协方差的倒数?任何帮助,将不胜感激.

***编辑:上面的马哈拉诺比斯距离方程是不正确的.它应该是x'*C ^ -1*x,其中x =(ba),而b和a是我们试图找到距离的两个向量(感谢LRPurser).因此,所选答案中提出的解决方案如下:

d = x'*b,其中b = C ^ -1*x C*b = x,因此使用LU分解或LDL'分解求解b.

com*_*orm 9

您可以(并且应该!)使用LU分解而不是显式反转矩阵:C x = b使用分解求解具有比计算C^-1和乘法向量更好的数值属性b.

由于矩阵是对称的,因此LU分解实际上等同于LDL*分解,这是您在实际情况中应该实际使用的分解.由于矩阵也是正定的,因此您应该能够在不进行旋转的情况下执行此分解.


编辑:请注意,对于此应用程序,您无需解决完整C x = b问题.

相反,考虑到C = L D L*与差矢量v = a-b,解决L* y = vy(这是一半多的工作,充分LU解算器).

然后,y^t D^-1 y = v^t C^-1 v可以在线性时间内计算.


小智 8

第一马哈拉诺比斯距离(MD)是关于两个向量的测量中的不确定性的标准距离.当C=Indentity matrixMD减少到欧几里德距离时,产品减少到矢量范数.对于所有非零向量,MD总是正定的或大于零.通过与向量选择适宜的剂型ab,a*C^-1*b可以小于零.希望您正在寻找的向量的差异x=(a-b)使得计算x^t*C^-1*x在哪里x^t是向量的转置x.另请注意,MD=sqrt(x^t*C^-1*x) 由于矩阵是对称且正定的,因此您可以使用Cholesky分解(MatLab-chol),该分解使用一半的操作作为LU并且在数值上更稳定.chol(C)=L其中C=L*L^t,其中L是下三角矩阵和L^t是转置的L,这使得它的上三角.你的算法应该是这样的

(Matlab的)

  x=a-b;
  L=chol(C); 
  z=L\x; 
  MD=z'*z; 
  MD=sqrt(MD);
Run Code Online (Sandbox Code Playgroud)