伪逆矩阵与奇异值分解(SVD)


伪逆矩阵与奇异值分解(SVD)

伪逆矩阵

矩阵的逆

定义:设\(A\)\(n\)阶方阵,如果存在\(n\)阶方阵\(B\),使得\(AB=BA=E\),则称矩阵\(A\)为可逆矩阵,矩阵\(B\)成为\(A\)的逆矩阵,记作\(A^{-1}=B\)

注意:如果\(n\)阶矩阵\(A\)的行列式\(\left | A \right |=0\),则称\(A\)为奇异矩阵,奇异矩阵没有逆矩阵。

矩阵逆的求法:

  1. 伴随矩阵。
  2. 初等行列式变换。

伪逆矩阵

通过上面的定义可以知道,奇异矩阵和非方阵是没有逆矩阵的,但是他们可以有伪逆矩阵。

定义:对于一个矩阵A,如果存在一个矩阵B满足下面四个式子,则称B为广义逆。

  • \(ABA=A\)
  • \(BAB=B\)
  • \((AB)^{T}=AB\)
  • \((BA)^{T}=BA\)

伪逆表示:

  • 如果矩阵\(C\)的逆不为0,则\(C\)可以满秩分解\(C=AB\),那么\(C^+=A^T(AA^T)^{-1}(B^TB)^{-1}B^T\)
  • 仅当\(m\ge n\)时,列满秩,矩阵\(A_{mn}\)有左逆矩阵,\(A^L=(A^TA)^{-1}A^T\)
  • \(n\ge m\)时,行满秩,矩阵\(A_{mn}\)有右逆矩阵,\(A^R=A^T(A^TA)^{-1}\)

(1)伪逆矩阵

代码

最小二乘法中,\(Ax=b\),最小二乘法解 \(\widehat{x} =A^+b\)

import numpy as np
pinv=np.linalg.pinv(A) #求矩阵的伪逆

奇异值分解(SVD)

方阵特征值

定义:设\(A\)\(n\)阶矩阵,如果数\(\lambda\)\(n\)维非零列向量\(X\)使得关系式

\[AX=\lambda X \tag{1} \]

成立,那么数\(\lambda\)就是方阵\(A\)的特征值。

由相似矩阵的定义可以知道,

\[PAP^{-1}=\sum \tag{2} \]

\[\Rightarrow A=P\sum P^{-1} \tag{3} \]

其中\(\sum\)为对角矩阵,并且特征值都在对角线上。

当P为正交矩阵的时候,即\(PP^T=E\),满足:

\[A=P\sum P^T \tag{4} \]

注意:以上就是特征分解表达式,但是A必须是方阵。

当A不是方阵的时候,就需要使用奇异值分解。

奇异值分解

\(SVD\)也是对矩阵进行分解,但是和特征分解不同,\(SVD\)并不要求要分解的矩阵为方阵。假设我们的矩阵\(A\)是一个\(m×n\)的矩阵,那么我们定义矩阵\(A\)\(SVD\)为:

\[A=U\sum V^T \tag{5} \]

其中,\(U\)\(m×m\)的方阵,\(\sum\)\(m×n\)的矩阵,\(V\)\(n×n\)的方阵,并且\(U\)\(V\)是正交矩阵。

\(A^TA\)是一个\(n×n\)的方阵,对它进行特征值分解,满足:

\[(A^TA)V=\lambda V \tag{6} \]

\(A^TA\)的n个特征值对应\(V\)\(n\)个特征向量,将所有特征向量合并成一个\(n×n\)的方阵V。

同理,\(AA^T\)是一个\(m×m\)的方阵,对它进行特征值分解,满足:

\[(AA^T)U=\lambda U \tag{7} \]

\(AA^T\)的m个特征值对应U的m个特征向量,将所有特征向量合并成一个m*m的方阵U。

证明:

\[A=U\sum V^T,A^T=V\sum U^T \tag{8} \]

\[A^TA=V\sum U^TU\sum V^T=V {\textstyle \sum_{}^{2}} V^T \tag{9} \]

其中,\(UU^T=E,\sum={\textstyle \sum_{}^{T}}\),由此得出上面的对应关系,并且还可以得出来特征值矩阵等于奇异值矩阵的平方,即:

\[\sigma_{i} = \sqrt{\lambda _{i}} \tag{10} \]

代码

import numpy as np
U,s,V=np.linalg.svd(A)

(2)奇异值分解


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM