在数值库(计算)上求解奇异值分解时有什么限制?

时间:2012-02-25 20:32:57

标签: c# math linear-algebra

我正在使用Math.NET的“奇异分解”对某些数据库进行PCA分析。根据列数和行数的不同,算法会保持不变运行(所以我假设它没有收敛)。

我认为Math.NET的SVD实现基于LAPACK。

所以我想知道这个算法是否有任何限制,或者我的数据集的特征是否会导致这种情况。

PS:数据似乎在每个属性之间没有太多的协方差。

1 个答案:

答案 0 :(得分:1)

对于计算奇异值分解的大多数(如果不是全部)算法,不能保证算法将终止,尽管它不是非常罕见。像LAPACK这样的好实现将在经过一定次数的迭代后停止并返回错误。

在你的情况下,对于大小约为100的矩阵(我假设当你说超过大约70时你的意思不是很多),计算SVD最多需要几秒钟。如果需要更长的时间,您的矩阵可能是极少数情况下,库使用的算法不会收敛。我说你发现错误的可能性更大,在这种情况下你应该联系图书馆的维护人员。