奇异值分解
奇异值分解(Singular Value Decomposition, SVD)是重要的矩阵分解方法,可用于降维、推荐系统、图像压缩和噪声过滤。
概念详解
任意矩阵
其中
数学公式及其推导
由
因此:
奇异值满足:
其中
它是 Frobenius 范数意义下最优的秩
应用代码
python
import numpy as np
A = np.array([[5, 5, 0, 0], [5, 4, 0, 0], [0, 0, 4, 5], [0, 0, 5, 4]], dtype=float)
U, S, Vt = np.linalg.svd(A, full_matrices=False)
k = 2
A_k = U[:, :k] @ np.diag(S[:k]) @ Vt[:k, :]
print("奇异值:", S)
print(np.round(A_k, 2))小结
SVD 把矩阵拆成“方向 + 强度 + 方向”的形式。较大的奇异值对应主要结构,较小的奇异值往往对应噪声或细节。