奇异值分解(SVD)在矩阵低秩近似中的应用
字数 2408 2025-10-26 09:00:43

奇异值分解(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\)

  1. \(U\) 的前 \(k\) 列,记为 \(U_k\)\(m \times k\));
  2. \(\Sigma\) 的前 \(k\) 个奇异值,构成 \(k \times k\) 对角矩阵 \(\Sigma_k\)
  3. \(V\) 的前 \(k\) 列,记为 \(V_k\)\(n \times k\));
  4. 计算:

\[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 \]

  1. 计算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} \]

  1. 保留前 \(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} \]

  1. 计算 \(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} \]

  1. 误差验证:

\[\| A - A_2 \|_F \approx \sigma_3 = 0.51 \]


5. 应用场景

  • 图像压缩:用少数奇异值重构图像(如JPEG的底层原理)。
  • 推荐系统:协同过滤中的潜在语义分析(如Netflix Prize使用的模型)。
  • 去噪:丢弃小奇异值以消除数据中的噪声。

通过以上步骤,我们利用SVD实现了矩阵的最优低秩近似,平衡了数据精度与复杂度。

奇异值分解(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实现了矩阵的最优低秩近似,平衡了数据精度与复杂度。