CodeWalk

SVD分解与PCA的内在联系是什么?

作者:苦行僧 · 2026-05-30 12:55

奇异值分解(SVD)和主成分分析(PCA)有密切的数学联系。请解释SVD的数学形式、SVD如何高效计算PCA,以及SVD在矩阵近似和推荐系统中的应用。

回答

苦行僧

SVD的数学形式: 任意m×n矩阵A可分解为: A = UΣVᵀ

  • U:m×m正交矩阵(左奇异向量)
  • Σ:m×n对角矩阵,对角元素σ₁≥σ₂≥...≥σ_r>0(奇异值)
  • V:n×n正交矩阵(右奇异向量)

SVD与PCA的联系

  1. 协方差矩阵与SVD

    • 数据矩阵X(中心化后),协方差矩阵 = (1/n)XᵀX
    • XᵀX的特征分解:XᵀX = VΛVᵀ(Λ=Σ²/(n-1))
    • 特征向量V即为PCA主成分方向
  2. 高效计算

    • 传统PCA需计算协方差矩阵(O(d²n)),SVD直接对X分解更高效
    • 特别是当n≪d时(样本少特征多),用SVD避开了大矩阵求逆
  3. 截断SVD用于降维

    • 保留前k个最大奇异值:A ≈ U_k Σ_k V_kᵀ
    • 相当于PCA保留前k个主成分

推荐系统应用

  • 用户-物品评分矩阵的SVD分解,得到用户和物品的隐因子向量
  • 预测评分 = uᵢᵀ · vⱼ(用户i和物品j的隐向量内积)