奇异值分解(SVD)在矩阵低秩近似中的应用
题目描述
给定一个 \(m \times n\) 的实数矩阵 \(A\) 和一个目标秩 \(k\)(其中 \(k \leq \text{rank}(A)\)),如何利用奇异值分解(SVD)构造一个秩为 \(k\) 的矩阵 \(A_k\),使得 \(A_k\) 在弗罗贝尼乌斯范数(Frobenius norm)意义下最接近原矩阵 \(A\)?要求解释低秩近似的数学原理和计算步骤。
1. 奇异值分解(SVD)的回顾
矩阵 \(A\) 的SVD分解为:
\[A = U \Sigma V^T \]
其中:
- \(U\) 是 \(m \times m\) 的正交矩阵,列向量称为左奇异向量;
- \(\Sigma\) 是 \(m \times n\) 的对角矩阵,对角线元素为奇异值 \(\sigma_1 \geq \sigma_2 \geq \dots \geq \sigma_r > 0\)(\(r = \text{rank}(A)\));
- \(V\) 是 \(n \times n\) 的正交矩阵,列向量称为右奇异向量。
2. 低秩近似的数学原理
关键定理(Eckart-Young-Mirsky定理):
在弗罗贝尼乌斯范数(或算子范数)下,矩阵 \(A\) 的最优秩-\(k\) 近似由保留前 \(k\) 个最大奇异值对应的部分得到:
\[A_k = \sum_{i=1}^k \sigma_i u_i v_i^T \]
其中 \(u_i\) 和 \(v_i\) 分别是 \(U\) 和 \(V\) 的第 \(i\) 列。
误差公式:
近似误差为被丢弃的奇异值的平方和:
\[\| A - A_k \|_F^2 = \sum_{i=k+1}^r \sigma_i^2 \]
3. 低秩近似的计算步骤
步骤1:计算矩阵 \(A\) 的SVD
- 通过数值算法(如Jacobi迭代或分治算法)计算 \(A = U \Sigma V^T\)。
- 实践中常使用截断SVD(Truncated SVD)直接计算前 \(k\) 个奇异值及对应向量,以节省计算量。
步骤2:选择目标秩 \(k\)
- 根据需求确定 \(k\),例如通过奇异值衰减曲线( scree plot)选择保留多少能量(能量占比 = \(\frac{\sum_{i=1}^k \sigma_i^2}{\sum_{i=1}^r \sigma_i^2}\))。
步骤3:构造近似矩阵 \(A_k\)
- 取 \(U\) 的前 \(k\) 列,记为 \(U_k\)(\(m \times k\));
- 取 \(\Sigma\) 的前 \(k\) 个奇异值,构成 \(k \times k\) 对角矩阵 \(\Sigma_k\);
- 取 \(V\) 的前 \(k\) 列,记为 \(V_k\)(\(n \times k\));
- 计算:
\[A_k = U_k \Sigma_k V_k^T \]
4. 实例演示(数值例子)
设矩阵
\[A = \begin{bmatrix} 1 & 2 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \end{bmatrix}, \quad k=2 \]
- 计算SVD(此处直接给出结果):
\[U = \begin{bmatrix} -0.85 & 0.53 & 0.00 \\ -0.33 & -0.54 & -0.77 \\ -0.41 & -0.65 & 0.64 \end{bmatrix}, \quad \Sigma = \begin{bmatrix} 2.80 & 0 & 0 \\ 0 & 1.35 & 0 \\ 0 & 0 & 0.51 \end{bmatrix}, \quad V^T = \begin{bmatrix} -0.57 & -0.59 & -0.57 \\ 0.82 & -0.14 & -0.55 \\ 0.00 & 0.80 & -0.60 \end{bmatrix} \]
- 保留前 \(k=2\) 个奇异值:
\[U_2 = \begin{bmatrix} -0.85 & 0.53 \\ -0.33 & -0.54 \\ -0.41 & -0.65 \end{bmatrix}, \quad \Sigma_2 = \begin{bmatrix} 2.80 & 0 \\ 0 & 1.35 \end{bmatrix}, \quad V_2 = \begin{bmatrix} -0.57 & 0.82 \\ -0.59 & -0.14 \\ -0.57 & -0.55 \end{bmatrix} \]
- 计算 \(A_2 = U_2 \Sigma_2 V_2^T\):
\[A_2 \approx \begin{bmatrix} 1.02 & 1.97 & 0.04 \\ 0.06 & 0.95 & 0.99 \\ 0.98 & 0.02 & 1.02 \end{bmatrix} \]
- 误差验证:
\[\| A - A_2 \|_F \approx \sigma_3 = 0.51 \]
5. 应用场景
- 图像压缩:用少数奇异值重构图像(如JPEG的底层原理)。
- 推荐系统:协同过滤中的潜在语义分析(如Netflix Prize使用的模型)。
- 去噪:丢弃小奇异值以消除数据中的噪声。
通过以上步骤,我们利用SVD实现了矩阵的最优低秩近似,平衡了数据精度与复杂度。