PCA可以使用SVD和EIG计算,但SVD被认为更加数值稳定(似乎它在成熟的机器学习项目中更常用)。
所以我需要对内存使用和性能的这两种方法进行一些比较,并证明为什么其中一种方法的数值更稳定。
我这里是关于QR方法和关于SVD计算的Jacobi旋转方法,但我不知道它们的属性。
答案 0 :(得分:3)
我没有为您提供所有答案,但如果您想了解这一点,您要求的是Schur分解和SVD的比较(例如http://www.ijcaonline.org/icvci/number14/icvci1529.pdf)因为我相信Schur分解是大多数人计算特征值的方式。
在我的工作中,我通常更喜欢使用奇异值分解,除非特征值可以是复数这一事实,而奇异值总是真实的。当然,SVD具有更高的计算复杂度。
我听说SVD更准确,但我承认不知道为什么。我想当人们说SVD更准确时,他们意味着svd(A)将产生比eig(A ^ T * A)更准确的奇异值,这绝对是正确的。注意,A ^ T表示矩阵A的转置。