SVD直观理解

原文链接

最近在看的MLAPP第七章中出现了多次SVD的内容,大学的时候只学了实对称矩阵的对角化,这次趁机会好好弥补一下。
师兄给我发了一个张志华老师的SVD总结,总共一百多页,很数学让我看了就头大。相比之下,上面这篇文章就很基础和直观。
文章大概的脉络如下:

  1. 对一个向量左乘一个矩阵 M M M相当于在M的列向量上进行了伸缩
  2. 但是M的列向量不一定是正交的,可能进行旋转伸缩后得到的形状很奇怪
  3. 我们想要将变化后的向量组(也就是M的列向量)变成一个正交的形式
  4. 为此我们将X先分解为由一组正交基向量构成的形式( x ⃗ = v 1 ⃗ v 1 ⃗ T x ⃗ + ⋯ + v n ⃗ v n ⃗ T x ⃗ \vec{x} =\vec{v_1}\vec{v_1}^T\vec{x}+\cdots+\vec{v_n}\vec{v_n}^T\vec{x} x =v1 v1 Tx ++vn vn Tx )
  5. 对上述等式乘左 M M M后,我们希望选取的正交基向量组在乘以M后得到的向量组仍是相互正交的
  6. 但是该如何选取向量组 { V ⃗ } \{\vec{V}\} {V }呢?文章举了二维例子,变化后的 M v 1 ⃗ M\vec{v_1} Mv1 应该是其长轴的方向。那么问题就是变成了一个优化问题,即
    arg ⁡ max ⁡ v 1 ⃗ v 1 ⃗ T M T M v 1 ⃗ \arg\max_{\vec{v_1}}\vec{v_1}^TM^TM\vec{v_1} argv1 maxv1 TMTMv1
    s . t   v 1 ⃗ T v 1 ⃗ = 1 s.t \ \vec{v_1}^T\vec{v_1}=1 s.t v1 Tv1 =1
    利用朗格朗日乘子法得到 v 1 ⃗ \vec{v_1} v1 应为 M T M M^TM MTM的特征向量。
    而矩阵 U U U则为对应的 M v ⃗ M\vec{v} Mv 的单位向量。
    文章强调说, σ \sigma σ的值越大,则该方向越重要。
    我的理解是,如果把矩阵 M M M看作一个对于向量 x ⃗ \vec{x} x 的·变换,那么我们可以用 U Σ V T U\Sigma V^T UΣVT等效的来代替 M M M。其中V是对 x ⃗ \vec{x} x 做了正交分解,正交矩阵U是规定了方向, σ \sigma σ越小则该方向的长度就越小,如果足够的小,我们就可以忽略该方向在重构 x ⃗ \vec{x} x 时也能较好的表现 x ⃗ \vec{x} x

你可能感兴趣的:(SVD直观理解)