SVD分解
网上大多的SVD分解流程会是这种,写出这种流程的博客、知乎也好,基本上应该都是东抄抄西抄抄,未在实际中使用或者在实际使用中发现问题也没解决?
网上常见的分解流程:
A = U Σ V T A=U\Sigma V^T A=UΣVT
- 1、计算 A T ∗ A A^T*A AT∗A和 A ∗ A T A*A^T A∗AT的值;
- 2、分别 A T ∗ A A^T*A AT∗A和 A ∗ A T A*A^T A∗AT特征向量及其特征值;
- 3、 A ∗ A T A*A^T A∗AT 的特征向量组成 U;而 A T ∗ A A^T*A AT∗A 的特征向量组成 V;
- 4、 A ∗ A T A*A^T A∗AT和 A T ∗ A A^T*A AT∗A特征根是相等的,对非零特征值求平方根,对应上述特征向量的位置,填入 Σ 的对角元。
上述问题:
例如下面的矩阵A= [ 4 4 − 3 3 ] \begin{bmatrix} 4&4\\ -3&3\\ \end{bmatrix} [4−343]对齐进行SVD分解
- A T ∗ A A^T*A AT∗A = [ 4 − 3 4 3 ] ∗ [ 4 4 − 3 3 ] = [ 25 7 7 25 ] \begin{bmatrix} 4&-3\\4&3\\\end{bmatrix} * \begin{bmatrix} 4&4\\-3&3\\\end{bmatrix}=\begin{bmatrix} 25&7\\7&25\\\end{bmatrix} [44−33