为什么奇异值分解可以实现数据降维

结论

奇异值分解(Singular Value Decomposition,SVD)可以把一个矩阵分解成三个矩阵:

其中:

  • :原始数据矩阵。
  • :左奇异向量矩阵。
  • :奇异值矩阵,主对角线上是奇异值。
  • :右奇异向量矩阵的转置。

SVD 能降维的关键在于:奇异值按重要性从大到小排列,较大的奇异值保留了数据中的主要结构,较小的奇异值通常对应细节、噪声或次要变化。

核心思想

SVD 把数据拆成一组按重要性排序的方向。只保留最重要的前 个方向,就能用更低维度近似表示原始数据。

(附件 svd-low-rank.svg 未随站点发布)

上图中的 、、 表示只保留前 个主要方向,用低秩矩阵 近似原始矩阵 。

数据矩阵怎么理解

假设有一个数据矩阵:

可以把它理解为:

  • 行:样本数量。
  • 列:特征数量。

例如:

  • 每一行是一篇文章。
  • 每一列是一个词。
  • 矩阵中的数值表示某个词在文章中的权重。

或者:

  • 每一行是一张图片。
  • 每一列是一个像素。
  • 矩阵中的数值表示像素灰度。

如果 很大,数据维度就很高。高维数据通常会带来存储、计算、可视化和建模上的困难。

SVD 的分解含义

SVD 分解为:

可以直观理解为:

其中最关键的是 。

的主对角线元素是奇异值:

奇异值越大,说明对应方向对原始矩阵的贡献越大。

为什么可以只保留前 k 个奇异值

完整 SVD 可以写成多个秩一矩阵的和:

其中:

  • 是矩阵的秩。
  • 是第 个左奇异向量。
  • 是第 个右奇异向量。
  • 是第 个奇异值。

因为奇异值已经从大到小排序,所以前几项通常贡献最大。

如果只保留前 项:

就得到原矩阵的低秩近似:

这就是 SVD 降维的数学基础。

低秩近似是什么意思

矩阵的秩可以理解为数据中真正独立的信息方向数量。

如果一个矩阵看起来有很多列,但这些列之间高度相关,那么它的有效信息维度可能远小于列数。

例如:

  • 一张图片有很多像素,但大块区域颜色相近。
  • 用户评分矩阵有很多商品,但用户偏好可能由少数兴趣因素决定。
  • 文档词频矩阵有很多词,但文章主题可能只有少数几个。

SVD 可以找出这些主要方向,然后丢掉次要方向。

SVD 降维的几何理解

矩阵可以看成一种线性变换。

SVD 把这个变换拆成三步:

  1. :先旋转或重新选择坐标方向。
  2. :沿不同方向缩放。
  3. :再旋转到输出空间。

其中 的奇异值决定每个方向被拉伸多少。

如果某个方向的奇异值很小,说明数据在这个方向上的变化很弱。去掉这个方向,对整体形状影响不大。

Note

降维不是随便删列,而是换到一组更能表示数据结构的新坐标系,然后保留最重要的坐标方向。

为什么这能压缩数据

原始矩阵 有 个数。

如果用前 个奇异值近似,则只需要保存:

  • :
  • :
  • :

总参数量大约是:

也就是:

当 远小于 和 时,存储量会明显下降。

和 PCA 的关系

PCA(主成分分析)也可以用 SVD 实现。

如果对数据矩阵做中心化,然后对中心化后的矩阵做 SVD,那么右奇异向量对应 PCA 的主成分方向,奇异值反映每个主成分解释的方差大小。

所以 SVD 降维和 PCA 降维有很深的关系:

  • SVD 是矩阵分解方法。
  • PCA 是统计降维方法。
  • 中心化数据上的 SVD 可以用于计算 PCA。

一个简单例子

假设一个矩阵的奇异值是:

前两个奇异值已经远大于后面三个。

这说明数据的主要结构大多集中在前两个方向上。保留前两个方向,舍弃后三个方向,就能在损失较小的情况下把数据从 5 个方向压缩到 2 个方向。

为什么小奇异值常常可以丢掉

小奇异值对应的方向贡献较小,可能来自:

  • 测量噪声。
  • 偶然波动。
  • 非主要模式。
  • 对整体结构影响很小的细节。

丢掉这些方向后,数据反而可能更清晰,因为噪声被过滤了。

但这不是绝对的。如果小奇异值对应的是业务上重要的稀有信号,直接丢掉可能会损失关键信息。

Warning

SVD 降维保留的是数学意义上的主要能量,不一定等于业务意义上的重要信息。异常检测、欺诈检测、故障预警等场景中,小模式也可能很重要。

如何选择 k

常见方法是看累计能量占比:

如果前 个奇异值的平方和占总平方和的 90% 或 95%,就可以认为它们保留了大部分信息。

也可以画奇异值曲线,寻找明显拐点:

  • 拐点之前:主要结构。
  • 拐点之后:细节或噪声。

应用场景

SVD 降维常用于:

  • 图像压缩。
  • 文本主题分析。
  • 推荐系统。
  • 噪声过滤。
  • 特征压缩。
  • 可视化前的降维。
  • 矩阵补全。

小结

SVD 能实现数据降维,是因为它把原始矩阵拆成一组按重要性排序的方向。奇异值越大,对数据结构贡献越大。只保留前 个最大奇异值及其对应方向,就能得到低维近似。

记忆方式

SVD 降维就是:找到数据最重要的几个方向,保留它们,丢掉贡献小的方向,用更少的信息近似表示原始数据。