一文读懂奇异值分解(SVD)数学原理

奇异值分解(SVD)原理详解及推导

在这里插入图片描述

特征值分解(EVD)

现在假设存在 m × m m\times m m×m 的满秩矩阵 A A A,它有 m m m个不同的特征值:
A x 1 = λ 1 x 1 A x 2 = λ 2 x 2 … A x m = λ m x m \begin{aligned} A x_{1} &=\lambda_{1} x_{1} \\ A x_{2} &=\lambda_{2} x_{2} \\ & \ldots \\ A x_{m} &=\lambda_{m} x_{m} \end{aligned} Ax1Ax2Axm=λ1x1=λ2x2=λmxm
记为
A U = U Λ A U=U \Lambda AU=UΛ
其中
U = [ x 1 x 2 ⋯ x m ] Λ = [ λ 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ λ m ] U=\left[\begin{array}{ccc} x_{1} & x_{2} & \cdots & x_{m} \end{array}\right] \\ \Lambda=\left[\begin{array}{ccc} \lambda_{1} & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \lambda_{m} \end{array}\right] \\ U=[x1x2xm]Λ=λ100λm

所以可定义 A A A的特征值分解
A = U Λ U − 1 = U Λ U T A=U \Lambda U^{-1}=U \Lambda U^{T} A=UΛU1=UΛUT

由于对称阵特征向量两两正交,所以U为正交阵。一般我们会把这 n n n 个特征向量标准化,即满足 || x i ∣ ∣ 2 = 1 , x_{i}||_{2}=1, xi2=1, 或者说 x i T x i = 1 , x_{i}^{T} x_{i}=1, xiTxi=1, 此时 A A A n n n 个特征向量为标准正交基, , , , 满足 U T U = I U^{T} U=I UTU=I U T = U − 1 , U^{T}=U^{-1}, UT=U1, 也就是说 U U U 为酉矩阵。

总结一下, A A A 可以将一组正交基映射到另一组正交基,那么现在来分析:对任意 m × n m\times n m×n的矩阵,能否找到一组正交基使得经过它变换后还是正交基?答案是肯定的,它就是SVD分解的精髓所在。

奇异值分解(SVD)

特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的。奇异值分解是一个能适用于任意的矩阵的一种分解的方法。假设我们的矩阵A是一个 m × n m\times n m×n的矩阵,那么我们定义矩阵A的SVD为:
A m × n = U m × m Σ m × n V n × n T A_{m\times n}=U_{m\times m} \Sigma_{m\times n} V_{n\times n}^{T} Am×n=Um×mΣm×nVn×nT

其中 U U U 是一个 m × m m \times m m×m 的矩阵, Σ \Sigma Σ是一个 m × n m \times n m×n 的矩阵, 除了主对角线上的元素以外全为0, 主对角线上的每个元素都称为奇异值, V是一个 n × n n \times n n×n 的矩阵。U和V都是酉矩阵, 即满足 U T U = I , V T V = I 0 U^{T} U=I, V^{T} V=I_{0} UTU=I,VTV=I0

那么找们如何求出SVD分解后的 U , Σ , V U, \Sigma, V U,Σ,V这三个矩阵呢?
如果我们将A的转置和 A A A做矩阵乘法, 那么会得到 n × n n \times n n×n 的一个方阵 A T A A^{T} A ATA。 显然 A T A A^{T} A ATA 是方阵, 那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

( A T A ) v i = λ i v i \left(A^{T} A\right) v_{i}=\lambda_{i} v_{i} (ATA)vi=λivi

这样我们就可以得到矩阵 A T A A^{T} A ATA 的n个特征值和对应的 n n n个特征向量 v v v 了。将 A T A A^{T} A ATA 的所有特征向量张成一个 n × n n \times n n×n,的矩阵 V V V。同理 矩阵 A A T A A^{T} AAT n n n个归一化的特征值和对应的n个特征向量满足:
( A A T ) u i = λ i u i \left(A A^{T}\right) u_{i}=\lambda_{i} u_{i} (AAT)ui=λiui
A A T AA ^{T} AAT 的所有归一化的特征向量张成一个 m × m m \times m m×m 的矩阵 U U U

U U U V V V我们都求出来了,现在就剩下奇异值矩阵 Σ \Sigma Σ没有求出了。由于 Σ \Sigma Σ除了对角线上是奇异值其他位置都是0,那我们只需要求出每个奇异值 σ \sigma σ就可以了。
A = U Σ V T ⇒ A V = U Σ V T V A=U \Sigma V^{T} \Rightarrow A V=U \Sigma V^{T} V A=UΣVTAV=UΣVTV
⇒ A V = U Σ \Rightarrow A V=U \Sigma AV=UΣ
即:
A ⁡ [ v 1 , v 2 , ⋯   , v k ∣ v k + 1 , ⋯   , v n ] = [ u 1 , u 2 , ⋯ u k , ∣ u k + 1 , ⋯ u m ] [ σ 1 ⋱ 0 σ k 0 0 ] \operatorname{A}\left[v_{1}, v_{2}, \cdots ,v_{k} | v_{k+1}, \cdots ,v_{n}\right]=\left[u_{1}, u_{2}, \cdots u_{k}, | u_{k+1}, \cdots u_{m}\right]\left[ \begin{array}{ccc|c} \sigma_{1} & & & \\ & \ddots & & 0 \\ & & \sigma_{k} & \\ \hline & 0 & & 0 \end{array} \right] A[v1,v2,,vkvk+1,,vn]=[u1,u2,uk,uk+1,um]σ10σk00
其中 k = R a n k ( A ) k=Rank(A) k=Rank(A)

根据 A v i = σ i u i A v_{i}=\sigma_{i} u_{i} Avi=σiui 我们可以求出我们的每个奇异值,进而求出奇异值矩阵 Σ \Sigma Σ
下面证明 U , V U,V U,V求法的正确性,已 V V V为例:
A = U Σ V T ⇒ A T = V Σ T U T ⇒ A T A = V Σ T U T U Σ V T = V Σ 2 V T A=U \Sigma V^{T} \Rightarrow A^{T}=V \Sigma^{T} U^{T} \Rightarrow A^{T} A=V \Sigma^{T} U^{T} U \Sigma V^{T}=V \Sigma^{2} V^{T} A=UΣVTAT=VΣTUTATA=VΣTUTUΣVT=VΣ2VT
可以看出 A T A A^{T} A ATA 的特征向量组成的的确就是我们SVD中的 V V V矩阵。

进一步我们还可以看出我们的特征值矩阵 V V V等于奇异值矩阵 Σ \Sigma Σ的平方,所以特征值和奇异值满足:
σ i = λ i \sigma_{i}=\sqrt{\lambda_{i}} σi=λi
所以也可以通过求出 A T A^{T} AT A的特征值取平方根来求奇异值。


X = [ u 1 ⋯ u k ] [ σ 1 ⋱ σ k ] = [ σ 1 u 1 ⋯ σ k u k ] , Y = [ v 1 T ⋮ v k T ] X=\left[\begin{array}{lll} u_{1} & \cdots & u_{k} \end{array}\right]\left[\begin{array}{ccc} \sigma_{1} & & \\ & \ddots & \\ & & \sigma_{k} \end{array}\right]=\left[\begin{array}{lll} \sigma_{1} u_{1} & \cdots & \sigma_{k} u_{k} \end{array}\right], Y=\left[\begin{array}{c} v_{1}^{T} \\ \vdots \\ v_{k}^{T} \end{array}\right] X=[u1uk]σ1σk=[σ1u1σkuk],Y=v1TvkT
A = X Y A=XY A=XY即是 A A A的满秩分解。
在这里插入图片描述
在矩阵 Σ \Sigma Σ 中也是从大到小排列,而且 σ \sigma σ 的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
A m × n ≈ U m × r Σ r × r V r × n T A_{m \times n} \approx U_{m \times r} \Sigma_{r \times r} V_{r \times n}^{T} Am×nUm×rΣr×rVr×nT

参考:

  1. https://www.cnblogs.com/pinard/p/6251584.html
  2. https://blog.csdn.net/zhongkejingwang/article/details/43053513
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值