矩阵的SVD分解(理论到计算结果)

为什么要用到SVD分解?

从特征值和特征向量说起:

首先回顾下特征值和特征向量的定义:A_{m\times m}x=\lambda x其中A是一个m*m的实对称矩阵,x是一个m维向量,则我们说λ是矩阵A的一个特征值,而x是矩阵A的特征值λ所对应的特征向量。

求出特征值和特征向量有什么好处呢? 就是我们可以将矩阵A特征分解。假设我们已经求出了矩阵A的m个特征值:\lambda _{1}\geq \lambda _{2}\geq ...... \lambda _{m},以及这m个特征值所对应的特征向量(\rho _{1},\rho _{2}, ... \rho _{m})。若这m个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:A _{m \times m }=\rho _{m \times m }\Sigma \rho _{m\times m}^{-1},其中是\rho _{m\times m}这m个特征向量所组成的m*m维矩阵,而\Sigma _{m\times m}为这m个特征值为主对角线的m*m维矩阵。

一般我们会把\rho _{m\times m}的这m个特征向量标准化,即满足 \left \|\rho _{i} \right \|^{2}=1或者说\rho _{i^{T}}\rho _{i}=1,此时\rho _{m\times m}的m个特征向量为标准正交基,满足\rho _{m\times m}^{T}\rho _{m\times m}=1,即\rho _{m\times m}^{-1}=\rho _{m\times m}, 也就是说\rho _{m\times m}为酉矩阵。这样我们的特征分解表达式可以写A _{m\times m}=\rho _{m\times m}\Sigma \rho _{m\times m}^{T}的形式。

注意要进行特征分解,矩阵A必须为方阵。那么如果A不是方阵,即行和列不相同时,我们还可以对矩阵进行分解吗?答案是SVD

SVD(Singular Value Decomposition),矩阵的奇异值分解。分解方法如下:

若A是m*n的矩阵,则可以分解为A=U\Sigma V ^{T},(此式子就是奇异值分解)其中U=m*m,\Sigma=m*n,V=n*n。

  1. U是标准正交矩阵。(AA^{T}的特征向量进行标准化后的结果???)。U中第i列的向量被称为关于\sigma _{i}的左奇异向量。U可以看作是对A的正交“输入”或分析的基向量,这些向量是矩阵AA^{T}(mxm)的特征向量。
  2. V是A^{T}A的特征向量进行标准化后的结果,故V是标准正交矩阵。V中第i列的向量被称为关于\sigma _{i}的右奇异向量。U可以看作是对A的正交“输出”的基向量,这些向量是矩阵A^{T}A(nxn)的特征向量
  3. \Sigma是奇异值矩阵。(\Sigma是m*n的非负实数对角矩阵,并且\Sigma对角线上的元素\sigma _{i}是矩阵A的奇异值,非对角线上的元素为0。一般我们的习惯是将这些奇异值按照从大到小的顺序排列,即\Sigma是由A唯一确定了)

什么样的矩阵可以进行SVD分解?

任何矩阵均有SVD分解。

将上述列表用矩阵来A表示:\begin{pmatrix} 5 & 5& 0& 5\\ 5& 0 & 3 & 4\\ 3& 4& 0 & 3\\ 0& 0& 5& 3\\ 5& 4& 4& 5\\ 5& 4& 5& 5 \end{pmatrix} 矩阵A为6行5列矩阵,对其进行奇异值分解。

对A进行SVD分解,取k=2,A_{m*m}\Sigma _{m*n}V_{n*n}^{T} \Rightarrow A_{m*k}\Sigma _{k*k}V_{k*n}^{T}

矩阵的奇异值分解意义

对于奇异值,跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值减少的特别快。在很多情况下前10%甚至1%的奇异值的和就占了全部奇异值之和的99%以上。也就是说,我们可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩。如下:

A_{m\times n}=U_{m\times m}\Sigma _{m\times n}A_{n\times n}\approx A_{m\times n}=U_{m\times k}\Sigma _{k\times k}A_{k\times n}

什么是奇异值?

假设A是一个m*n的矩阵,则A^{T}A是一个n*n的方阵,且是个对陈矩阵。

假设:A^{T}A的特征值为\lambda _{1},......,\lambda _{n},特征向量为V_{1},......,V_{n}

  1. A^{T}A的特征值全部非负。即\lambda _{i}>0
  2. \sigma _{i}=\sqrt{\lambda _{i}}\sigma _{i}称为A的奇异值。即A的奇异值为A^{T}A的特征值开根号后的结果。
  3. \sigma _{i}是向量AV_{i}的长度。

\sigma _{i}的两种计算方式:

矩阵的SVD分解计算过程:

如下有一个A矩阵:

  

(以一个简单的矩阵来计算推导)

特征值分解和奇异值分解不同之处?

      首先,特征值只能作用在一个mm的正方矩阵上,而奇异值分解则可以作用在一个mn的长方矩阵上。其次,奇异值分解同时包含了旋转、缩放和投影三种作用,A=U\Sigma V ^{T}式中,U和V都起到了对A旋转的作用,而Σ起到了对A缩放的作用。特征值分解只有缩放的效果。

参考:https://www.cnblogs.com/endlesscoding/p/10033527.html

https://blog.csdn.net/qq_40438165/article/details/102879986

https://blog.csdn.net/u014157109/article/details/93141506

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章