fengdu78 / lihang-code

《统计学习方法》的代码实现
18.66k stars 6.26k forks source link

Chap 16. PCA 中SVD解法中参数的问题 #58

Open ChenGeng777 opened 2 years ago

ChenGeng777 commented 2 years ago

numpy.linalg.svd(A) 中, 如果用多元随机变量的协方差的无偏样本对协方差矩阵C= Cov(X^T,X) = X^T*X/(n-1) 进行 SVD, A应该是中心化的X, 即 $$X = USV^h$$ $$C = VS U^h USV/(n-1) = V S^2 V^h $$

所以, 应该用 np.linalg.svd(X), 其中 X 做了中心化。实例中做标准化再 SVD 是用相关系数矩阵为标准做PCA。

相关资源参考: PCA 和 SVD 关系