线性代数|机器学习-P7SVD奇异值分解

1. 奇异值分解

现在我们用的是一个m行n列的矩阵A,那么我们计算下特征值方程:
A m × n x n × 1 = λ x n × 1 ; b m × 1 = A m × n x n × 1 \begin{equation} A_{m\times n}x_{n\times 1}=\lambda x_{n\times 1};b_{m\times 1}=A_{m\times n}x_{n\times 1} \end{equation} Am×nxn×1=λxn×1;bm×1=Am×nxn×1

  • m ≠ n m\neq n m=n时, b m × 1 ≠ λ x n × 1 b_{m\times 1}\neq \lambda x_{n\times 1} bm×1=λxn×1,所以当A为长方形矩阵的时候,由于向量大小的原因,我们无法使用 A x = λ x Ax=\lambda x Ax=λx公式,为了解决如下问题,我们引入奇异值分解SVD。
    A m × n = U m × m Σ m × n V n × n T , U U T = I m × m , V V T = I n × n \begin{equation} A_{m\times n}=U_{m\times m}\Sigma_{m\times n}V^T_{n\times n},UU^T=I_{m\times m},VV^T=I_{n\times n} \end{equation} Am×n=Um×mΣm×nVn×nT,UUT=Im×m,VVT=In×n

1.1 SVD求解

假设我们有任意矩阵A,可以得到SVD分解, A = U Σ V T A=U\Sigma V^T A=UΣVT,那么我们可以构造对称矩阵进行求解; U U T = I , V V T = I UU^T=I,VV^T=I UUT=I,VVT=I
A A T = U Σ V T V Σ T U T = U ( Σ Σ T ) U T \begin{equation} AA^T=U\Sigma V^TV\Sigma^TU^T=U(\Sigma\Sigma^T)U^T \end{equation} AAT=UΣVTVΣTUT=U(ΣΣT)UT

  • 我们可以把 A A T AA^T AAT看作是矩阵A右乘一个矩阵 A T A^T AT,所以可以得到 A A T AA^T AAT为矩阵A的列向量的线性组合,所以得到的U肯定在A的列向量空间中。这样可以得到 U , Σ U,\Sigma U,Σ
    A T A = V Σ T U T U Σ V T = V ( Σ T Σ ) V T \begin{equation} A^TA=V\Sigma^TU^TU\Sigma V^T=V(\Sigma^T\Sigma) V^T \end{equation} ATA=VΣTUTUΣVT=V(ΣTΣ)VT
  • 我们可以把 A T A A^TA ATA看作是矩阵A左乘一个矩阵 A T A^T AT,所以可以得到 A T A A^TA ATA为矩阵A的行向量的线性组合,所以得到的V肯定在A的行向量空间中。这样可以得到 V , Σ V,\Sigma V,Σ
  • 最后我们通过验证 A v = σ u Av=\sigma u Av=σu来验证 σ \sigma σ 的符号。
    -奇异值SVD分解后矩阵向量分布情况如图:
    在这里插入图片描述
  • 我们发现,对于矩阵A的分解来说,有部分向量 u r + 1 ⋯ u m u_{r+1}\cdots u_m ur+1um对于与 σ r + 1 = ⋯ = σ n = 0 \sigma_{r+1}=\cdots=\sigma_n=0 σr+1==σn=0,所以这部分的向量其实是 N ( A T ) N(A^T) N(AT)零空间向量,所以我们希望更一步进行压缩矩阵,我们本身希望用非零的特征值,具体公式如下:
    A v 1 = σ 1 u 1 , A v 2 = σ 2 u 2 , ⋯ A v r = σ r u r \begin{equation} Av_1=\sigma_1 u_1,Av_2=\sigma_2 u_2,\cdots Av_r=\sigma_r u_r \end{equation} Av1=σ1u1,Av2=σ2u2,Avr=σrur
  • 整理可得如下:
    A [ v 1 v 2 ⋯ v r r o w − s p a c e ] = [ u 1 u 2 ⋯ u r c o l u m n − s p a c e ] [ σ 1 σ 2 ⋱ σ r ] → A V r = U r Σ r \begin{equation} A\begin{bmatrix}v_1&v_2&\cdots&v_r\\\\&row-space\end{bmatrix}=\begin{bmatrix}u_1&u_2&\cdots&u_r\\\\&column-space\end{bmatrix}\begin{bmatrix}\sigma_1&\\\\&\sigma_2\\\\&&\ddots\\\\&&&\sigma_r\end{bmatrix}\rightarrow AV_r=U_r\Sigma_r \end{equation} A v1v2rowspacevr = u1u2columnspaceur σ1σ2σr AVr=UrΣr

1.2 行基和列基转换

  • 这样 A V r = U r Σ r AV_r=U_r\Sigma_r AVr=UrΣr中的均无零向量和零值了。真神奇的想法!!那么行空间的基向量通过上面公式就可以映射到列空间的基向量上,具体如图所示 :
    在这里插入图片描述
  • 证明当 v 1 ⊥ v 2 v_1\perp v_2 v1v2,经过 A v = σ u Av=\sigma u Av=σu时, u 1 ⊥ u 2 u_1\perp u_2 u1u2
    u 1 = A v 1 σ 1 , u 2 = A v 2 σ 2 , u 1 T u 2 = ( A v 1 σ 1 ) T A v 2 σ 2 = v 1 T A T A v 2 σ 1 σ 2 \begin{equation} u_1=\frac{Av_1}{\sigma_1},u_2=\frac{Av_2}{\sigma_2},u_1^Tu_2=(\frac{Av_1}{\sigma_1})^T\frac{Av_2}{\sigma_2}=\frac{v_1^TA^TAv_2}{\sigma_1\sigma_2} \end{equation} u1=σ1Av1,u2=σ2Av2,u1Tu2=(σ1Av1)Tσ2Av2=σ1σ2v1TATAv2
  • 我们之前得到如下结论 A T A v 2 = v 2 σ 2 2 A^TAv_2=v_2\sigma_2^2 ATAv2=v2σ22,代入可得:
    u 1 T u 2 = v 1 T A T A v 2 σ 1 σ 2 = v 1 T σ 2 2 v 2 σ 1 σ 2 = σ 2 v 1 T v 2 σ 1 = 0 → u 1 ⊥ u 2 \begin{equation} u_1^Tu_2=\frac{v_1^TA^TAv_2}{\sigma_1\sigma_2}=\frac{v_1^T\sigma^2_2v_2}{\sigma_1\sigma_2}=\frac{\sigma_2v_1^Tv_2}{\sigma_1}=0\rightarrow u_1\perp u_2 \end{equation} u1Tu2=σ1σ2v1TATAv2=σ1σ2v1Tσ22v2=σ1σ2v1Tv2=0u1u2

2. Ax图像表示

假设我们有一个矩阵A,进行分解后得到 A = U Σ V T A=U\Sigma V^T A=UΣVT,那么可得:
A x = U Σ V T x \begin{equation} Ax=U\Sigma V^Tx \end{equation} Ax=UΣVTx

  • step1: V T x V^Tx VTx将图像旋转
  • step2: Σ V T x \Sigma V^Tx ΣVTx将图像沿轴拉伸
  • step3: U Σ V T x U\Sigma V^Tx UΣVTx将图像旋转
  • 小结,Ax的本质是将向量的基进行旋转,拉伸,旋转作用
    在这里插入图片描述

3. 极坐标表示

我们希望将任意一个矩阵A分解为一个对称矩阵S和正交矩阵Q的形式,可以进行如下变形:
A = U Σ V T = ( U Σ U T ) ( U V T ) , S = U Σ U T , Q = U V T \begin{equation} A=U\Sigma V^T=(U\Sigma U^T) (UV^T),S=U\Sigma U^T,Q=UV^T \end{equation} A=UΣVT=(UΣUT)(UVT),S=UΣUT,Q=UVT

4. 小结

通过SVD奇异值分解可得,我们将任意矩阵分解后,可以挑选出r个重要的非零特征值的矩阵。
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ r u r v r T , σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r ; \begin{equation} A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_ru_rv_r^T,\sigma_1\geq\sigma_2\geq\cdots\geq\sigma_r; \end{equation} A=σ1u1v1T+σ2u2v2T++σrurvrT,σ1σ2σr;

  • 所以可得得到矩阵A中最重要的信息在 σ 1 u 1 v 1 T + ⋯ + σ k u k v k T \sigma_1u_1v_1^T+\cdots+\sigma_ku_kv_k^T σ1u1v1T++σkukvkT上。其他的部分因为 σ k + 1 u k + 1 v k + 1 T + ⋯ + σ r u r v r T \sigma_{k+1}u_{k+1}v_{k+1}^T+\cdots+\sigma_ru_rv_r^T σk+1uk+1vk+1T++σrurvrT中的 σ \sigma σ太小而可以忽略,这样就起到以小的矩阵组合来表示原始矩阵的方式,这个就是我们的 主成分分析PCA,真神奇!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值