- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 1500x1500 协方差矩阵,我正在尝试计算 EM-ML 方法的行列式。协方差矩阵是通过找到SIGMA矩阵然后将其传递到最近的SPD库(Link) 来获得的使矩阵为正定。在这种情况下,矩阵始终是奇异的。我尝试的另一种方法是使用 A'*A 技术手动生成正定矩阵。 (A 取 1600x1500 矩阵)。这总是给我无限的行列式。关于如何获得具有有限行列式的正定矩阵有什么想法吗?
最佳答案
你真的需要行列式,还是行列式的对数?例如,如果您正在计算高斯的对数似然,那么进入对数似然的就是行列式的对数。在高维中,行列式可能不适合 double ,但它的对数很可能适合。
如果您使用(下三角)因子 L 执行协方差 C 的乔列斯基因式分解,那么
C = L*L'
然后
det C = det(L) * det( L') = det(L) * det(L)
但是下三角矩阵的行列式是其对角线元素的乘积,因此,取上面的对数,我们得到:
log det C = 2*Sum{ i | log( L[i,i])}
(回复评论)即使您需要计算高斯 pdf,最好计算其对数并仅在需要时才取幂。例如,具有协方差 C(具有胆汁因子 L)和均值 0(纯粹为了节省打字)的 d 维高斯为:
p(x) = exp( -0.5*x'*inv(C)*x) /( sqrt( pow(2pi,d) * det(C))
所以
log p(x) = -0.5*x'*inv(C)*x - 0.5*d*log(2pi) - 0.5*log(det(C))
也可以写
log p(x) = -0.5*y'*y - 0.5*d*log(2pi) - log(det(L))
哪里
y = inv(L)*x
关于MATLAB:协方差矩阵的行列式是 0 或 inf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36920840/
我试图找到这 3 个函数的 Wronskian 行列式,但代码有“TypeError: No loop matching the specified signature and casting was
我需要编写一个在编译时计算行列式的 constexpr 函数。最明显的解决方案是使用拉普拉斯展开。支持 C++14。 #include #include constexpr int get_cof
是否有任何类似 A * A-1 = I 的数学性质可用于测试类似格式的单元测试中行列式的计算? 最佳答案 手动计算一个(或多个)已知数组的行列式,并将您的结果与该数字进行比较。 尝试不同大小、排列方式
我有一个大的 numpy 数组 arr,形状为 (N, D, M, D) 其中 D 是两个或三。该数组可以被认为是 (D,D) 矩阵 block ,这些矩阵在 N 和 M 维度中被阻塞在一起。我想取这
我是一名优秀的程序员,十分优秀!