奇异值分解(Singular Value Decomposition,简称SVD),已被解密

奇异值分解(Singular Value Decomposition,简称SVD) 的新解密

一份带有Python示例的全面SVD指南

奇异值分解(SVD)是一种强大的矩阵分解技术,将一个矩阵分解为另外三个矩阵,揭示了原始矩阵的重要结构特征。它被广泛应用于信号处理、图像压缩和机器学习中的降维等各种领域。

本文提供了关于如何计算矩阵的SVD的逐步指南,包括详细的数值示例。然后,通过使用Python示例演示了如何使用SVD进行降维。最后,本文讨论了SVD的各种应用以及一些限制。

本文假设读者具有线性代数的基本知识。更具体地说,读者应该熟悉向量和矩阵范数、矩阵的秩、特征分解(特征向量和特征值)、正交向量和线性投影等概念。

来自Pixabay的Peggy und Marco Lachmann-Anke的图片

数学定义

一个 m × n 实矩阵 A 的奇异值分解是一个形式为 A = UΣVᵗ 的分解,其中:

  • U 是一个 m × m 的正交矩阵(即其列和行是正交向量)。U 的列称为 A 的左奇异向量
  • Σ 是一个 m × n 的矩形对角阵,对角线上是非负实数。对角线上的元素 σᵢ = Σᵢᵢ 被称为 A 的奇异值,通常按降序排列,即 σ₁ ≥ σ₂ ≥ … ≥ σₙ ≥ 0。非零奇异值的数量等于 A 的秩。
  • V 是一个 n × n 的正交矩阵。V 的列称为 A 的右奇异向量

每个实的 m × n 矩阵都有唯一的奇异值分解(该结论的证明可以在这里找到)。这与例如特征值分解不同,特征值分解只适用于可对角化的方阵。

计算SVD

可以使用以下观察来计算矩阵 A 的奇异值分解:

  1. A 的左奇异向量是一组正交归一化的特征向量…