矩阵特征值分解(EVD)和奇异值分解(SVD)总结

1. 特征值分解(EVD)

实对称矩阵

在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵 A A A 是一个 m × m m \times m m×m 的实对称矩阵(即 A = A T A = A^T A=AT),那么它可以被分解成如下的形式
A = Q Σ Q T = Q [ λ 1 … … … … λ 2 … … … … ⋱ … … … … λ m ] Q T A = Q \Sigma Q^T = Q{ \left[ \begin{array}{ccc} \lambda_1 & \ldots & \ldots & \ldots \\ \ldots & \lambda_2 & \ldots & \ldots \\ \ldots & \ldots & \ddots & \ldots \\ \ldots & \ldots & \ldots & \lambda_m \end{array} \right ]} Q^T A=QΣQT=Qλ1λ2λmQT
其中 Q Q Q 为标准正交阵,有 Q Q T = I QQ^T = I QQT=I Σ \Sigma Σ为对角矩阵,上面的矩阵维度均为 m × m m \times m m×m λ i \lambda_i λi 称为特征值, q i q_i qi Q Q Q(特征矩阵)中的列向量,称为特征向量。它们之间的关系有 A q i = λ i q i Aq_i = \lambda_i q_i Aqi=λiqi q i T q j = 0 ( i ≠ j ) q_i^Tq_j = 0 (i \neq j) qiTqj=0(i=j)
这里的特征值分解需要被分解的矩阵 A A A为实对称矩阵,但是现实中,我们所遇到的问题一般不是实对称矩阵。那么当我们碰到一般的矩阵,即有一个 m × n m \times n m×n 的矩阵 A A A,它是否能被分解成上面的形式呢?当然是可以的,这就是我们下面要讨论的内容。

2. 奇异值分解(SVD)

1. 定义

一个 m × n m \times n m×n的实数矩阵 A A A,我们需要把它分解成如下的形式
A = U Σ V T A = U \Sigma V^T A=UΣVT
其中 U U U V V V 均为单位正交阵,有 U U T = I UU^T = I UUT=I V V T = I VV^T = I VVT=I U U U 称为左奇异矩阵, V V V 称为右奇异矩阵, Σ \Sigma Σ 仅在主对角线上有值,称为奇异值,其他元素均为0。上面矩阵的维度分别为 U ∈ R m × m U \in R^{m \times m} URm×m Σ ∈ R m × n \Sigma \in R^{m \times n} ΣRm×n V ∈ R n × n V \in R^{n \times n} VRn×n
那么 Σ \Sigma Σ有如下形式
Σ = [ σ 1 0 0 0 0 σ 2 0 0 0 0 ⋱ 0 0 0 0 ⋱ ] m × n \Sigma = { \left[ \begin{array}{ccc} \sigma_1 & 0 & 0 & 0 \\ 0 & \sigma_2 & 0 & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \ddots \end{array} \right ]}_{m \times n} Σ=σ10000σ200000000m×n

2. 奇异值分解

我们可以利用下面的方法求解 U , V , Σ U,V,\Sigma U,V,Σ
A A T = U Σ V T V Σ T U T = U Σ Σ T U T A T A = V Σ U T U Σ T V T = V Σ T Σ V T AA^T = U \Sigma V^T V \Sigma^T U^T = U \Sigma \Sigma^T U^T \\ A^TA = V \Sigma U^T U \Sigma^T V^T = V \Sigma^T \Sigma V^T AAT=UΣVTVΣTUT=UΣΣTUTATA=VΣUTUΣTVT=VΣTΣVT
这里 Σ Σ T \Sigma \Sigma^T ΣΣT Σ T Σ \Sigma^T \Sigma ΣTΣ 是不相等的,因为它们的维数不同, Σ Σ T ∈ R m × m \Sigma \Sigma^T \in R^{m \times m} ΣΣTRm×m Σ T Σ ∈ R n × n \Sigma^T \Sigma \in R^{n \times n} ΣTΣRn×n,但是它们在主对角线上的奇异值是相等的,即
Σ Σ T = [ σ 1 2 0 0 0 0 σ 2 2 0 0 0 0 ⋱ 0 0 0 0 ⋱ ] m × m Σ T Σ = [ σ 1 2 0 0 0 0 σ 2 2 0 0 0 0 ⋱ 0 0 0 0 ⋱ ] n × n \Sigma \Sigma^T = { \left[ \begin{array}{ccc} \sigma_1^2 & 0 & 0 & 0\\ 0 & \sigma_2^2 & 0 & 0\\ 0 & 0 & \ddots & 0\\ 0 & 0 & 0 & \ddots \end{array} \right ]}_{m \times m} \qquad \Sigma^T \Sigma = { \left[ \begin{array}{ccc} \sigma_1^2 & 0 & 0 & 0\\ 0 & \sigma_2^2 & 0 & 0\\ 0 & 0 & \ddots & 0\\ 0 & 0 & 0 & \ddots \end{array} \right ]}_{n \times n} ΣΣT=σ120000σ2200000000m×mΣTΣ=σ120000σ2200000000n×n
我们知道 A A T AA^T AAT A T A A^TA ATA 都是对称矩阵,那么就可以对它们做特征值分解,分别得到矩阵 U U U V V V,对 Σ Σ T \Sigma \Sigma^T ΣΣT Σ T Σ \Sigma^T \Sigma ΣTΣ 中的特征值开方,就可以得到所有的奇异值。

3. 求解步骤

  1. 先分别求解矩阵 A A T AA^T AAT A T A A^TA ATA
  2. 利用
    A A T = U Σ V T V Σ T U T = U Σ Σ T U T A T A = V Σ U T U Σ T V T = V Σ T Σ V T AA^T = U \Sigma V^T V \Sigma^T U^T = U \Sigma \Sigma^T U^T \\ A^TA = V \Sigma U^T U \Sigma^T V^T = V \Sigma^T \Sigma V^T AAT=UΣVTVΣTUT=UΣΣTUTATA=VΣUTUΣTVT=VΣTΣVT
    进行特征值分解,得到矩阵 U U U V V V
  3. 对2中求得的矩阵 Σ Σ T \Sigma \Sigma^T ΣΣT Σ T Σ \Sigma^T \Sigma ΣTΣ 的特征值开方,最终得到所有的奇异值。

参考

SVD(奇异值分解)小结

你可能感兴趣的:(机器学习,线性代数,机器学习,人工智能)