【发布时间】:2014-12-09 17:50:23
【问题描述】:
在 Eigen 中有 recommendations 警告不要显式计算行列式和逆矩阵。
我正在使用正态逆愿望先验分布对多元正态进行后验预测。这可以表示为多元 t 分布。
在多元 t 分布中,您会找到一个术语 |Sigma|^{-1/2} 以及 (x-mu)^T Sigma^{-1} (x-mu)。
我对本征一无所知。我可以想象对于一个半正定矩阵(它是一个协方差矩阵),我可以使用 LLT 求解器。
但是,求解器本身没有定义 .determinant() 和 .inverse() 方法。我是否必须使用 .matrixL() 函数并自己反转对角线上的元素以求逆,并计算乘积以获得行列式?我想我错过了什么。
【问题讨论】:
-
您可以使用cholesky 分解来计算协方差矩阵的逆矩阵。这是有据可查的。
-
我们可能需要看到更多的方程......我的直觉是,如果你转换为在雅可比/特征值分解空间中工作,你也许可以在那里进行整个计算密集矩阵求逆/行列式中固有的错误和时间复杂度将消失。
-
@Bathsheba 在 Eigen 中,LLT 求解器用于 Cholesky 分解。
-
@IdeaHat 完整的方程式有点复杂。它可以在Conjugate Bayesian analysis of the Gaussian distribution (2007) Murphy 中找到。后验预测是eq。 258. 多元 t 分布是 eq。 313. 我目前的实现可以在github找到。
标签: c++ eigen matrix-inverse determinants