SVD奇异值分解逐步推导

SVD奇异值分解逐步推导

1. 回顾特征值和特征向量

首先回顾下特征值和特征向量的定义:
A x = λ x Ax=\lambda x Ax=λx其中,A是一个 n × n n\times n n×n的矩阵, x x x是一个 n n n维向量,则 λ \lambda λ是矩阵A的一个特征值,而 x x x是矩阵A的特征值 λ \lambda λ对应的特征向量。

求出特征值和特征向量有什么好处呢?就是我们可以将矩阵A特征分解。如果我们求出了矩阵A的n个特征值 λ 1 ≤ λ 2 ≤ . . . ≤ λ n \lambda _1\leq \lambda_2\leq ... \leq\lambda_n λ1λ2...λn,以及这 n n n个特征值所对应的特征向量 w 1 , w 2 , . . . , w n w_1, w_2, ..., w_n w1,w2,...,wn,那么矩阵A就可以用以下的特征分解表示:
W − 1 A W = Λ ⇔ A = W Λ W − 1 W^{-1}AW=\Lambda \Leftrightarrow A=W\Lambda W^{-1} W1AW=ΛA=WΛW1其中, W W W是这 n n n个特征向量所组成的 n × n n\times n n×n维矩阵,而 Λ \Lambda Λ是将这 n n n个特征值作为主对角线的 n × n n\times n n×n维矩阵。一般情况下,我们会把 W W W的这 n n n个特征向量标准化,即满足 ∣ ∣ w i ∣ ∣ 2 = 1 ||w_i||_2=1 wi2=1,或者 w i T w i = 1 w_i^Tw_i=1 wiTwi=1,此时 W W W n n n个特征向量为标准正交基,满足 W T W = I W^TW=I WTW=I,即 W T = W − 1 W^T=W^{-1} WT=W1,也就是说 W W W为酉矩阵。这样我们的特征分解表达式可以写成:
A = W Λ W T A=W\Lambda W^T A=WΛWT

题外延伸------矩阵压缩:

W = ( w 1 , w 2 , w 3 , . . . , w n ) W=(w_1, w_2, w_3,...,w_n) W=(w1,w2,w3,...,wn),则:
W T = ( w 1 T w 2 T w 3 T . . . w n T ) W^T=\begin{pmatrix} w_1^T\\ w_2^T\\ w_3^T\\ ... \\ w_n^T \end{pmatrix} WT=w1Tw2Tw3T...wnT那么:
A = ( w 1 , w 2 , w 3 , . . . , w n ) ( λ 1 λ 2 λ 3 . . . λ n ) ( w 1 T w 2 T w 3 T . . . w n T ) = λ 1 w 1 w 1 T + λ 2 w 2 w 2 T + λ 3 w 3 w 3 T + . . . + λ n w n w n T A=(w_1, w_2, w_3,...,w_n)\begin{pmatrix} \lambda_1&&&\\ &\lambda_2&&\\ &&\lambda_3&\\ &&&...\\ &&&&\lambda_n \end{pmatrix}\begin{pmatrix} w_1^T\\ w_2^T\\ w_3^T\\ ... \\ w_n^T \end{pmatrix} \\ =\lambda_1w_1w_1^T+\lambda_2w_2w_2^T+\lambda_3w_3w_3^T+...+\lambda_nw_nw_n^T A=(w1,w2,w3,...,wn)λ1λ2λ3...λnw1Tw2Tw3T...wnT=λ1w1w1T+λ2w2w2T+λ3w3w3T+...+λnwnwnT

假设A为 n × n n\times n n×n维矩阵,如果正常表示矩阵A共需使用 n 2 n^2 n2个元素,如果将取得的特征值 λ 1 , λ 2 , λ 3 , . . . , λ n \lambda_1,\lambda_2,\lambda_3,...,\lambda_n λ1,λ2,λ3,...,λn按从大到小排序,即 λ 1 ≥ λ 2 ≥ λ 3 ≥ . . . ≥ λ n \lambda_1\geq\lambda_2\geq\lambda_3\geq...\geq\lambda_n λ1λ2λ3...λn,则将A的压缩表示为 λ 1 w 1 w 1 T \lambda_1w_1w_1^T λ1w1w1T,即只需要 n + 1 n+1 n+1个元素。

注意到要进行特征分解,矩阵A必须为方阵。

那么如果A不是方阵,即行和列不相同时,我们还可以对矩阵进行分解吗?答案是可以,此时我们的SVD登场了。

2. SVD推导

Step1:矩阵分解

假如 A A A m × n m\times n m×n维矩阵,则 A T A A^TA ATA为对称正定矩阵。

证明:1)对称性: ( A T A ) T = A T A ⇒ 对 称 性 (A^TA)^T=A^TA\Rightarrow 对称性 (ATA)T=ATA
2)正定性: x T A T A x = ( A x ) T ( A x ) ≥ 0 ⇒ 正 定 性 x^TA^TAx=(Ax)^T(Ax)\geq 0\Rightarrow正定性 xTATAx=(Ax)T(Ax)0

对于矩阵A,有 ( A T A ) v i = λ i v i (A^TA)v_i=\lambda _iv_i (ATA)vi=λivi,其中 λ i \lambda_i λi为特征值, v i v_i vi为特征向量。假定 ( v i , v j ) (v_i, v_j) (vi,vj)是一组正交基,那么有 v i T ⋅ v j = 0 v_i^T\cdot v_j=0 viTvj=0,那么:
( A v i , A v j ) = ( A v i ) T ⋅ A v j = v i T A T A v j = v i T λ j v j = λ j v i T v j = 0 (Av_i, Av_j)=(Av_i)^T\cdot Av_j=v_i^TA^TAv_j=v_i^T\lambda_jv_j=\lambda_jv_i^Tv_j=0 (Avi,Avj)=(Avi)TAvj=viTATAvj=viTλjvj=λjviTvj=0因此, A v i , A v j Av_i,Av_j Avi,Avj也是一组正交基,根据上述公式可以推导出 ( A v i , A v i ) = λ i v i T v i = λ i (Av_i, Av_i)=\lambda_iv_i^Tv_i=\lambda_i (Avi,Avi)=λiviTvi=λi,从而可以得到:
∣ A v i ∣ 2 = λ i |Av_i|^2=\lambda_i Avi2=λi ∣ A v i ∣ = λ i |Av_i|=\sqrt{\lambda_i} Avi=λi 根据上述公式,有 A v i ∣ A v i ∣ = 1 λ i A v i \frac{Av_i}{|Av_i|}=\frac{1}{\sqrt{\lambda_i}}Av_i AviAvi=λi 1Avi,令 1 λ i A v i = u i \frac{1}{\sqrt{\lambda_i}}Av_i=u_i λi 1Avi=ui,可得:
A v i = λ i u i = δ i u i Av_i=\sqrt{\lambda_i}u_i=\delta_i u_i Avi=λi ui=δiui其中, δ i = λ i \delta_i=\sqrt{\lambda_i} δi=λi ,进一步推导:
A V = A ( v 1 , v 2 , . . . , v n ) = ( A v 1 , A v 2 , . . . , A v n ) = ( δ 1 u 1 , δ 2 u 2 , . . . , δ n u n ) = U Σ AV=A(v_1,v_2,...,v_n)=(Av_1,Av_2,...,Av_n)=(\delta_1u_1,\delta_2u_2,...,\delta_nu_n)=U\Sigma AV=A(v1,v2,...,vn)=(Av1,Av2,...,Avn)=(δ1u1,δ2u2,...,δnun)=UΣ从而得出:
A = U Σ V T A=U\Sigma V^T A=UΣVT

Step2:矩阵计算

得到矩阵A的表示后,我们应该如何计算向量 U U U V V V呢?继续往下面分析:

首先计算出A的转置 A T A^T AT A T = V Σ T U T A^T=V\Sigma ^TU^T AT=VΣTUT
A T A = V Σ T U T U Σ V T = V Σ 2 V T A^TA=V\Sigma^TU^TU\Sigma V^T=V\Sigma^2V^T ATA=VΣTUTUΣVT=VΣ2VT利用上式可以得到, A T A v i = λ i v i A^TAv_i=\lambda_iv_i ATAvi=λivi,只需要求出 A T A A^TA ATA的特征向量即可得到 V V V.

同理可得 A A T AA^T AAT的值:
A A T = U Σ V T V Σ T U T = U Σ 2 U T AA^T=U\Sigma V^TV\Sigma^TU^T=U\Sigma^2U^T AAT=UΣVTVΣTUT=UΣ2UT可以得到 A A T u i = λ i u i AA^Tu_i=\lambda_iu_i AATui=λiui,只需要求出 A A T AA^T AAT的特征向量即可得到 U U U.

题外延伸-----矩阵(图像)压缩:

一个 m × n m\times n m×n的矩阵A经SVD分解后,可以写成如下形式:
A m × n = U m × m Σ V n × n T = ( u 1 , u 2 , . . . , u m ) ( λ 1 1 2 λ 2 1 2 . . . ) ( v 1 T v 2 T . . . v n T ) = λ 1 1 2 u 1 v 1 T + λ 2 1 2 u 2 v 2 T + . . . A_{m\times n}=U_{m\times m}\Sigma V^T_{n\times n}=(u_1,u_2,...,u_m)\begin{pmatrix} \lambda_1^{\frac{1}{2}}&&\\ &\lambda_2^{\frac{1}{2}}&\\ &&... \end{pmatrix}\begin{pmatrix} v_1^T\\ v_2^T\\ ...\\ v_n^T \end{pmatrix}\\ =\lambda_1^{\frac{1}{2}}u_1v_1^T+\lambda_2^{\frac{1}{2}}u_2v_2^T+... Am×n=Um×mΣVn×nT=(u1,u2,...,um)λ121λ221...v1Tv2T...vnT=λ121u1v1T+λ221u2v2T+...
假设A为 m × n m\times n m×n维矩阵,在没有压缩时表示矩阵A共需要 m × n m\times n m×n个元素。如果将取得的特征值按从大到小排序,即 λ 1 ≥ λ 2 ≥ λ 3 ≥ . . . ≥ λ m i n { m , n } \lambda_1\geq\lambda_2\geq\lambda_3\geq...\geq\lambda_{min\{m,n\}} λ1λ2λ3...λmin{m,n},则A的压缩最小压缩表示为 λ 1 1 2 u 1 v 1 T \lambda_1^{\frac{1}{2}}u_1v_1^T λ121u1v1T,即需要 m + n + 1 m+n+1 m+n+1个元素。
当压缩储存量为 ( m + n + 1 ) × k (m+n+1)\times k (m+n+1)×k时,误差为
e r r o r = ( m + n ) × ∑ i = 1 k λ i ( m + n ) × ∑ i = 1 m i n ( m , n ) λ i = ∑ i = 1 k λ i ∑ i = 1 m i n ( m , n ) λ i error=\frac{(m+n)\times\sum_{i=1}^{k}\lambda_i}{(m+n)\times\sum_{i=1}^{min(m,n)}\lambda_i}=\frac{\sum_{i=1}^{k}\lambda_i}{\sum_{i=1}^{min(m,n)}\lambda_i} error=(m+n)×i=1min(m,n)λi(m+n)×i=1kλi=i=1min(m,n)λii=1kλi

例题讲解

我们举一个简单的例子讲解矩阵时如何进行奇异值分解的。定义矩阵A为:
A = ( 0 1 1 1 1 0 ) A=\begin{pmatrix} 0 &1 \\ 1&1\\ 1&0 \end{pmatrix} A=011110首先求出 A T A 、 A A T A^TA、AA^T ATAAAT
A T A = ( 0 1 1 1 1 0 ) ( 0 1 1 1 1 0 ) = ( 2 1 1 2 ) A^TA=\begin{pmatrix} 0&1&1\\ 1&1&0 \end{pmatrix}\begin{pmatrix} 0&1\\ 1&1\\ 1&0 \end{pmatrix}=\begin{pmatrix} 2&1\\ 1&2 \end{pmatrix} ATA=(011110)011110=(2112) A A T = ( 0 1 1 1 1 0 ) ( 0 1 1 1 1 0 ) = ( 1 1 0 1 2 1 0 1 1 ) AA^T=\begin{pmatrix} 0&1\\ 1&1\\ 1&0 \end{pmatrix}\begin{pmatrix} 0&1&1\\ 1&1&0 \end{pmatrix}=\begin{pmatrix} 1&1&0\\ 1&2&1\\ 0&1&1 \end{pmatrix} AAT=011110(011110)=110121011进而求出 A T A A^TA ATA的特征值和特征向量:
λ 1 = 3 ; v 1 = ( 1 2 1 2 ) ; λ 2 = 1 ; v 2 = ( − 1 2 1 2 ) \lambda_1=3;v_1=\begin{pmatrix} \frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}} \end{pmatrix}; \lambda_2=1;v_2=\begin{pmatrix} -\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}} \end{pmatrix} λ1=3;v1=(2 12 1);λ2=1;v2=(2 12 1)接着求出 A A T AA^T AAT的特征值和特征向量:
λ 1 = 3 ; u 1 = ( 1 6 2 6 1 6 ) ; λ 2 = 1 ; u 2 = ( 1 2 0 − 1 2 ) ; λ 3 = 0 ; u 3 = ( 1 3 − 1 3 1 3 ) \lambda_1=3;u_1=\begin{pmatrix} \frac{1}{\sqrt{6}}\\ \frac{2}{\sqrt{6}}\\ \frac{1}{\sqrt{6}} \end{pmatrix}; \lambda_2=1;u_2=\begin{pmatrix} \frac{1}{\sqrt{2}}\\ 0\\ -\frac{1}{\sqrt{2}} \end{pmatrix};\lambda_3=0;u_3=\begin{pmatrix} \frac{1}{\sqrt{3}}\\ -\frac{1}{\sqrt{3}}\\ \frac{1}{\sqrt{3}} \end{pmatrix} λ1=3;u1=6 16 26 1;λ2=1;u2=2 102 1;λ3=0;u3=3 13 13 1利用 A v i = δ i u i , i = 1 , 2 Av_i=\delta_iu_i,i=1,2 Avi=δiui,i=1,2求奇异值:
( 0 1 1 1 1 0 ) ( 1 2 1 2 ) = δ 1 ( 1 6 2 6 1 6 ) ⇒ δ 1 = 3 \begin{pmatrix} 0&1\\ 1&1\\ 1&0 \end{pmatrix}\begin{pmatrix} \frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}} \end{pmatrix}=\delta_1\begin{pmatrix} \frac{1}{\sqrt{6}}\\ \frac{2}{\sqrt{6}}\\ \frac{1}{\sqrt{6}} \end{pmatrix} \Rightarrow\delta_1=\sqrt{3} 011110(2 12 1)=δ16 16 26 1δ1=3 ( 0 1 1 1 1 0 ) ( − 1 2 1 2 ) = δ 2 ( 1 2 0 − 1 2 ) ⇒ δ 2 = 1 \begin{pmatrix} 0&1\\ 1&1\\ 1&0 \end{pmatrix}\begin{pmatrix} -\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}} \end{pmatrix}=\delta_2\begin{pmatrix} \frac{1}{\sqrt{2}}\\ 0\\ -\frac{1}{\sqrt{2}} \end{pmatrix} \Rightarrow\delta_2=1 011110(2 12 1)=δ22 102 1δ2=1也可以用 δ i = λ i \delta_i=\sqrt{\lambda_i} δi=λi 直接求出奇异值为 3 \sqrt{3} 3 1 1 1.

最终得到矩阵A的奇异值分解为:
A = U Σ V T = ( 1 6 1 2 1 3 2 6 0 − 1 3 1 6 − 1 2 1 3 ) ( 3 0 0 1 0 0 ) ( 1 2 1 2 − 1 2 1 2 ) A=U\Sigma V^T=\begin{pmatrix} \frac{1}{\sqrt{6}} &\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \\ \frac{2}{\sqrt{6}} &0 & -\frac{1}{\sqrt{3}} \\ \frac{1}{\sqrt{6}} &-\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \end{pmatrix}\begin{pmatrix} \sqrt{3} & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix}\begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} A=UΣVT=6 16 26 12 102 13 13 13 13 00010(2 12 12 12 1)

SVD的一些性质

对于奇异值,他跟我们特征分解中的特征值类似,在奇艺置矩阵中也是按照从大到小排列,而且奇异值的减少特别快,在很多情况下,前10%甚至1%的奇异值就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个奇异值和对应的左右奇异向量来近似描述矩阵(与前面描述的题外延伸之矩阵压缩类似),由于这个重要的性质,SVD也可以用于PCA降维,来做数据压缩和去噪,也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需要来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

参考:https://zhuanlan.zhihu.com/p/29846048

参考:https://www.csuldw.com/2017/03/09/2017-03-09-svd/

你可能感兴趣的:(奇异值分解,机器学习,降维,机器学习,深度学习,SVD奇异值分解,降维)