线性代数(九)奇异值分解 SVD
Chen Kai BOSS

SVD(奇异值分解)被誉为线性代数的"皇冠明珠"——它能分解任何矩阵,不仅仅是方阵或对称矩阵。从图像压缩到 Netflix 推荐算法,从人脸识别到基因分析, SVD 无处不在。理解 SVD,就是掌握了数据科学最强大的数学工具之一。

引言:为什么 SVD 如此重要?

在前一章我们学习了对称矩阵的谱分解:。但这有一个限制——矩阵必须是对称的

现实世界中,大多数矩阵都不对称:

  • 图像矩阵(,通常
  • 用户-物品评分矩阵(推荐系统)
  • 文档-词项矩阵(自然语言处理)
  • 基因表达数据矩阵(生物信息学)

奇异值分解( SVD) 可以分解任意 矩阵:

$$

A = UV^T $$

这是线性代数中最强大、最有用的分解之一。

一个生活类比:理解 SVD 的本质

想象你是一位摄影师,想要理解一张照片的"本质"。照片可以看作一个矩阵——每个像素是一个数字。 SVD 告诉你:

  1. 任何照片都可以分解为若干"基础图层"的叠加
  2. 这些图层按重要性排序——第一层捕获最主要的结构,第二层捕获次要细节...
  3. 只保留前几层就能还原大部分信息

这就像乐队的录音可以分解为不同乐器的轨道:主唱、吉他、贝斯、鼓...有些轨道(如主唱)更"重要",去掉背景和声影响不大,但去掉主唱整首歌就变味了。

本章学习目标

  1. SVD 的定义与几何意义:理解 的含义
  2. 计算方法:如何求奇异值和奇异向量
  3. 与特征分解的关系: SVD 如何推广谱定理
  4. 低秩逼近:最佳秩- 逼近定理
  5. 伪逆:处理不可逆矩阵的通用方法
  6. 应用:图像压缩、主成分分析、推荐系统、潜在语义分析

SVD 的定义

基本定理

奇异值分解定理:任何 矩阵 都可以分解为:

$$

A = UV^T $$

其中:

  • 正交矩阵(左奇异向量
  • 对角矩阵(奇异值),对角元
  • 正交矩阵(右奇异向量

标准形式

关键性质

  • 奇异值 永远是非负实数(与特征值可能为负或复数不同)
  • 奇异值按降序排列:
  • SVD 对任意矩阵都存在(这是它比特征分解更强大的原因)

几何意义:变换的"解剖"

SVD 告诉我们:任何线性变换都可以分解为三步

  1. 旋转/反射):在输入空间中旋转坐标系
  2. 拉伸):沿新坐标轴方向拉伸(或压缩)
  3. 旋转/反射):在输出空间中旋转坐标系

生活类比:想象你在揉面团。

  • 第一步(:把面团转到一个"方便操作"的角度
  • 第二步(:用擀面杖把面团压扁、拉长——这是真正改变形状的步骤
  • 第三步(:把压好的面团转到最终需要的方向

可视化理解: - 的列:输入空间的一组正交基,是变换作用的"最自然方向" - 的列:输出空间的一组正交基,是变换结果的"最自然方向" - :在第 个方向上的拉伸因子

单位圆经过矩阵 变换后变成椭圆。 SVD 告诉我们: - 椭圆的主轴方向由 的列决定 - 椭圆的半轴长度就是奇异值 - 输入空间中的"特殊方向"由 的列给出

外积形式

SVD 还有一个重要的等价表达——外积展开

$$

A = _1 _1 _1^T + _2 _2 _2^T + + _r _r _r^T $$

每个 是一个秩 1 矩阵。所以:

任何矩阵都是若干秩 1 矩阵的加权和,权重就是奇异值。

这个视角在低秩逼近中至关重要。

例子

考虑 矩阵:

$$

A =

$$

SVD 分解(计算过程后面详述):

$$

A =

$$

奇异值: 几何意义:单位圆 → 旋转 45 ° → 沿 x 轴拉伸 5 倍、沿 y 轴拉伸 1 倍 → 旋转到最终位置

SVD 的计算

的关系

SVD 与对称矩阵的谱分解紧密相关。

关键观察: - 都是对称半正定矩阵 - 它们的非零特征值相同 - 它们的特征向量分别是 的列

详细推导

$$

A^TA = (UVT)T (UV^T) = V^T U^T UV^T = VTVT $$

因为。注意 是对角矩阵,对角元为

$$

A^TA = V (_1^2, , _n^2) V^T $$

这正是 的谱分解!

结论: - 的列是 的特征向量(右奇异向量) - 的特征值 - 奇异值

类似地:

$$

AA^T = U (_1^2, , _m^2) U^T $$ - 的列是 的特征向量(左奇异向量

直觉理解:为什么要用

可以理解为" 作用两次"的效果:先用 变换,再用 变换回来。这个往返过程放大了 的"主要作用方向"——奇异值大的方向被放大得更厉害( 倍),奇异值小的方向被压制。

计算步骤

给定 矩阵(假设):

步骤 1:计算 的特征值和特征向量 - 特征值: - 特征向量:(正交归一化) - 这些 组成矩阵 步骤 2:计算奇异值 - 步骤 3:计算左奇异向量 - (对$ i r = (A) m > r$,需要扩展为完整的正交基

步骤 4:构造 为什么

可以推出。取第 列:

$$

A_i = _i _i $$

所以(假设)。

例子:手工计算 SVD

计算 的 SVD 。

步骤 1:计算

$$

A^TA = =

$$

特征方程:

特征值: 特征向量(归一化): - : - : 步骤 2:奇异值

步骤 3:左奇异向量

计算得: 类似: 结果

$$

A =

$$

SVD 与四个基本子空间

SVD 优雅地揭示了矩阵的四个基本子空间。

四个子空间的关系

对于($ m n r$):

行空间 : - 维度: - 基: 的前 - 在

零空间 : - 维度: - 基: 的后 - 在

列空间 : - 维度: - 基: 的前 - 在

左零空间 : - 维度: - 基: 的后 - 在

关键洞察: - 的列给出定义域的正交分解:行空间 零空间 - 的列给出值域的正交分解:列空间 左零空间

SVD 的几何图像

SVD 给出了 作用的完整图像:

$$

A_i =

$$

意义: - 行空间的正交基 被映射到列空间的正交基 - 每个 被拉伸 倍 - 零空间被映射到零

低秩逼近

SVD 最重要的应用之一是最佳低秩逼近。这是数据压缩、降噪、推荐系统的理论基础。

Eckart-Young 定理

定理:设 是秩 矩阵的 SVD 。定义秩- 截断:

$$

A_k = _{i=1}^k _i _i _i^T = U_k _k V_k^T $$

其中 的前 列, 是前 个奇异值的对角矩阵。

是所有秩 矩阵中最接近 的矩阵(在 Frobenius 范数意义下):

意义: - 保留前 个奇异值/向量,丢弃其余 - 这是最优的秩$ k k$ 矩阵能更接近 - 误差由被丢弃的奇异值决定

生活类比:这就像音乐压缩。 MP3 格式丢弃人耳不敏感的高频成分,保留最重要的频率。 SVD 同理——保留"能量"最大的几个分量。

能量观点

奇异值的平方和等于矩阵的 Frobenius 范数平方:

个奇异值捕获的"能量"比例:

实际观察:大部分矩阵的奇异值快速衰减。例如,一张 1000 × 1000 的自然图像,前 50 个奇异值可能捕获 95%的能量。

应用:图像压缩

图像可以看作矩阵(灰度值)。用低秩逼近压缩:

原始图像 矩阵,存储 个数

压缩图像(秩$ kU_k m k$)+ 个数)+ ($ k n k(m + n) + k = k(m + n + 1)$ 个数 - 压缩率: 例子 图像,用秩 近似: - 原始: 个数 - 压缩: 个数 - 压缩率:约 10%

Python 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

# 读取图像并转为灰度
img = np.array(Image.open('photo.jpg').convert('L'), dtype=float)

# SVD 分解
U, s, Vt = np.linalg.svd(img, full_matrices=False)

# 保留前 k 个奇异值
def compress(U, s, Vt, k):
return U[:, :k] @ np.diag(s[:k]) @ Vt[:k, :]

# 不同压缩级别
for k in [5, 20, 50, 100]:
compressed = compress(U, s, Vt, k)
energy = sum(s[:k]**2) / sum(s**2) * 100
print(f"k={k}: 能量保留 {energy:.1f}%")

伪逆

动机:当逆矩阵不存在时

对于方程: - 如果 可逆,解是 - 如果 不可逆或非方阵呢?

伪逆(又称 Moore-Penrose 逆)提供了一个"最佳替代方案"。

定义

对于矩阵伪逆 定义为:

$$

A^+ = V^+ U^T $$

其中 的伪逆:

即:非零对角元取倒数,零元素保持为零,然后转置(调整维度)。

性质

伪逆满足四个 Moore-Penrose 条件:

  1. 2. $A+AA+ = A^+$3. 是对称的)
  2. 是对称的)

特殊情况:如果 可逆,

最小二乘解

对于方程

最小二乘解(最小化):

如果有多个最小二乘解, 是其中范数最小的解。

几何解释 做了两件事: 1. 把 投影到列空间(找最接近的可达点) 2. 在所有能到达投影点的 中,选范数最小的

应用:过定和欠定系统

过定系统,方程多于未知数): - 通常无精确解 - 给出最小二乘解

欠定系统,未知数多于方程): - 通常有无穷多解 - 给出最小范数解

实际应用:机器学习中的线性回归、数据拟合、系统辨识都大量使用伪逆。

主成分分析( PCA)

PCA 与 SVD 的关系

主成分分析是数据降维的经典方法,其核心就是 SVD 。

给定数据矩阵($ n p n p$ 个特征):

步骤 1:中心化数据

(每列减去其均值)

步骤 2:对 进行 SVD

则: - 主成分方向 的列(右奇异向量) - 主成分得分 - 方差解释 是第 主成分的方差

降维:保留前 个主成分:

$$

X_{reduced} = V_k = U_k_k $$

为什么 PCA 有效?

PCA 寻找数据变化最大的方向:

第一主成分:方差最大的方向

第二主成分:与 正交,方差次大的方向

结论:这正是 SVD 给出的右奇异向量。

生活类比:想象你有一团数据点的"云"。 PCA 找到云最"扁"的方向和最"长"的方向。最长的方向(方差最大)是第一主成分——它捕获数据最多的变化。

应用:数据可视化

高维数据(如 100 维)→ 投影到前 2 或 3 个主成分 → 可视化

例子:手写数字识别。每张 的图片是 784 维向量。用 PCA 投影到 2 维,不同数字形成不同的聚类。

推荐系统中的 SVD

问题背景

Netflix 、 Amazon 、淘宝等平台面临一个核心问题:如何预测用户对未评价商品的喜好?

用户-物品评分矩阵 用户 × 物品): - 已知部分:用户已评价的物品 - 目标:预测缺失的评分

矩阵分解思想

核心假设:评分由少数"潜在因子"决定。

例如电影评分可能由以下潜在因子决定: - 动作程度 - 浪漫程度 - 幽默程度 - 深度/艺术性 - ...

每个用户对这些因子有不同偏好,每部电影在这些因子上有不同得分。

SVD 方法

$$

R U_k _k V_k^T $$ - 的行:每个用户的"潜在因子向量" - 的行:每个物品的"潜在因子向量" - 预测评分 ≈ 用户因子 · 物品因子

Netflix Prize

Netflix 在 2006-2009 年举办百万美元大奖赛: - 任务:预测用户电影评分 - 数据: 1 亿条评分记录 - 目标:比 Netflix 算法准确 10%

获胜方法的核心:矩阵分解( SVD 的变种),处理稀疏数据和隐式反馈。

其他应用

潜在语义分析( LSA)

在自然语言处理中,文档-词项矩阵: - 行:文档 - 列:词汇 - 元素:词频( TF-IDF)

LSA:对 进行 SVD,保留前 个奇异向量: - 捕获"潜在语义"(主题) - 降维:从数万维到几百维 - 应用:文档相似度、信息检索、同义词发现

信号去噪

模型:观测信号 = 真实信号 + 噪声

如果真实信号是"低秩"的(有结构),而噪声是"满秩"的(随机): - SVD 分解观测信号 - 保留大奇异值(信号) - 丢弃小奇异值(噪声)

人脸识别( Eigenfaces)

将人脸图像集合进行 PCA: - 主成分 = "特征脸"( eigenfaces) - 每张人脸 ≈ 特征脸的线性组合 - 识别:比较系数向量的距离

总结与展望

本章关键要点

  1. SVD 定义 - :左奇异向量(输出空间正交基)

    • :奇异值(拉伸因子,永远非负)
    • :右奇异向量(输入空间正交基)
  2. 几何意义:任何线性变换 = 旋转 + 拉伸 + 旋转

  3. 计算方法

    • 的特征向量
    • 的特征向量
    • 4. 低秩逼近
    • Eckart-Young 定理: 是最佳秩-逼近
    • 应用:数据压缩、降噪
  4. 伪逆 - 处理不可逆和非方阵矩阵

    • 给出最小二乘解和最小范数解
  5. PCA: SVD 在数据分析中的核心应用

SVD vs 特征分解

特性 特征分解 SVD
适用矩阵 方阵(通常对称) 任意矩阵
分解形式
向量 特征向量 奇异向量
特征值(可负/复数) 奇异值(非负实数)
几何意义 不变方向+缩放 旋转+拉伸+旋转

为什么 SVD 是"皇冠明珠"?

  1. 普适性:适用于任何矩阵
  2. 稳定性:数值计算非常稳定
  3. 最优性:低秩逼近的最优性保证
  4. 洞察力:揭示矩阵的完整结构
  5. 应用广泛:从图像压缩到推荐系统

下一章预告

《矩阵范数与条件数》

  • 什么是"矩阵的大小"?
  • 不同范数的意义和应用
  • 条件数:矩阵有多"病态"?
  • 数值稳定性分析
  • 应用:误差分析、算法设计

理解范数和条件数对数值线性代数至关重要!

练习题

基础概念题

  1. 解释为什么奇异值永远是非负实数,而特征值可能是负数或复数。

  2. 计算 的 SVD(手工)。

  3. 证明:( Frobenius 范数)。

  4. 为什么 有相同的奇异值?给出证明。

  5. 如果 矩阵, 的形状是什么? 分别是什么形状?

计算与证明题

  1. 证明:非零奇异值的个数。

  2. ,求其 SVD 和伪逆

  3. 证明 Eckart-Young 定理: 是最佳秩-$ k|A-B|F^2 {k+1}^2 + + _r^2$)

  4. 证明伪逆满足: 是到列空间的投影矩阵, 是到行空间的投影矩阵。

  5. 是正交矩阵,它的奇异值是什么?为什么?

应用题

  1. 图像压缩实验:选择一张灰度图像,实现 SVD 压缩。
    • 画出奇异值衰减曲线
    • 比较 时的压缩图像
    • 计算每种情况的 PSNR(峰值信噪比)
  2. PCA 降维:使用 Iris 数据集:
    • 对数据进行 PCA
    • 画出前两个主成分的散点图,用颜色区分三种花
    • 计算前两个主成分解释的方差比例
  3. 简单推荐系统:创建一个 5 用户× 10 电影的评分矩阵(部分缺失):
    • 用 SVD 进行低秩近似(
    • 预测缺失评分
    • 讨论结果的合理性
  4. 文本分析:构造一个小型文档-词项矩阵( 5 个文档, 10 个词):
    • 计算 SVD
    • 解释前两个奇异向量的"语义"
    • 计算文档之间的相似度

挑战题

  1. SVD 与 2-范数:证明矩阵的 2-范数(算子范数)等于最大奇异值:

  2. 随机矩阵的奇异值:生成 的随机矩阵(元素独立同分布于),画出奇异值分布。与理论预测( Marchenko-Pastur 分布)比较。

  3. 截断 SVD 的误差界:证明( 2-范数意义下的误差)。

  4. 条件数与 SVD:矩阵的条件数定义为。解释为什么条件数大意味着矩阵"病态",求解 对误差敏感。

参考资料

  1. Strang, G. (2019). Introduction to Linear Algebra. 5th ed. Chapter 7.
    • SVD 的经典讲解
  2. Trefethen, L. N., & Bau, D. (1997). Numerical Linear Algebra. SIAM.
    • SVD 的数值计算和应用
  3. Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations. 4th ed. Johns Hopkins.
    • SVD 算法的权威参考
  4. Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning. Springer.
    • PCA 和数据降维
  5. Koren, Y., Bell, R., & Volinsky, C. (2009). "Matrix Factorization Techniques for Recommender Systems". Computer, 42(8).
    • Netflix Prize 和推荐系统
  6. 3Blue1Brown. Essence of Linear Algebra series. YouTube.
    • SVD 的优秀可视化

本文是《线性代数的本质与应用》系列的第 9 章,共 18 章。

  • 本文标题:线性代数(九)奇异值分解 SVD
  • 本文作者:Chen Kai
  • 创建时间:2019-02-17 14:45:00
  • 本文链接:https://www.chenk.top/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%EF%BC%88%E4%B9%9D%EF%BC%89%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3SVD/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论