【发布时间】:2016-08-23 13:58:12
【问题描述】:
我有一个 1500x1500 的协方差矩阵,我正在尝试计算 EM-ML 方法的行列式。协方差矩阵是通过找到 SIGMA 矩阵,然后将其传入最近的 SPD 库(Link) ,使矩阵为正定的。在这种情况下,矩阵总是奇异的。我尝试的另一种方法是使用 A'*A 技术手动生成正定矩阵。 (A 被视为 1600x1500 矩阵)。这总是给我无限的行列式。关于如何获得具有有限行列式的正定矩阵的任何想法?
【问题讨论】:
-
最简单的方法是统一矩阵
eye(N)。声称矩阵M的任意主子矩阵(M可以理解为M的最大子矩阵)的行列式是非零且正的。和M是正定的是等价的。因此我想你有溢出realmax值的问题。例如,您是否尝试过计算det(A*10^-6)? -
您也可以尝试通过循环
ii命令DetMinorA(ii)=det(A(1:ii,1:ii));来找到可以评估的最大sumbatrix -
所以我尝试了
det(A*10e-6),现在这给了我行列式为零。此外,DetMinorA(ii)=det(A(1:ii,1:ii));给了我有限的值,直到第 145 个索引。这个怎么办? -
那么你肯定会溢出
realmax的值。也许你可以尝试循环DetMinor(ii,jj)=det(A(1:ii,1:ii)*10^-jj);。也许jj=0:0.5:6会带来好的结果,但解释起来会很困难。或者您可以尝试寻找具有智能零分布的矩阵。 -
行列式很可能是有限的,但不是 64 位精度算术。由于行列式是特征值的乘积,无限结果仅意味着该集合中不存在真零(至少对于 Matlab 使用的 LU 分解的工作精度)并且没有真正的零特征值,行列式可能会溢出或下溢,除非选择特征值的大小使得乘积保持在
realmin和realmax之间。也就是说,为什么无限的决定因素会影响你的工作?
标签: matlab matrix machine-learning statistics linear-algebra