我正在尝试对共现矩阵 (C) 进行因子分析,该矩阵从术语文档矩阵 (TD) 计算如下:
C=TD*TD'
理论上 C 应该是半正定的,但事实并非如此,因此因子分析算法无法使用它。由于速度原因,我无法更改算法)。
我查了一下,可能是数值稳定性问题:
A simple algorithm for generating positive-semidefinite matrices
- 回答 2。
在这里进行的好方法是什么?
最佳答案
我会做矩阵的特征分解:
C=Q D Q^-1
如果您的矩阵确实是半正定的,那么所有特征值(D 对角线上的条目)都应该是非负的。 (这可能也是您的因子分析算法正在执行的测试,以查看矩阵是否为半正定矩阵。)
如果您遇到数字问题,某些特征值可能几乎不小于零。尝试将这些条目设置为零,计算
Q D Q^-1
得到一个新的、更正的 C,然后将它提交给你的因子分析算法。另一方面,如果你发现你的矩阵 C 有真正的负特征值,那么你就知道你在构造 C 的某个地方出错了。
关于math - 半正定矩阵和数值稳定性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2115880/