机器学习—SVD

文章目录


本文将记录学习 刘建平大佬SVD博客的相关内容。

SVD

在特征值和特征向量分解中,一个N*N的矩阵A可以分解为 A = W Σ W − 1 A=W\Sigma W^{-1} A=WΣW1,其中W矩阵是A矩阵的特征向量组成的标准正交列向量矩阵, Σ \Sigma Σ矩阵是由A矩阵的特征值组成的对角矩阵,由于W矩阵是列向量的标准正交基,则 W − 1 = W T W_{-1}=W^T W1=WT
由于特征值分解需要矩阵A是一个N*N的正方矩阵,对于普通的M*N的矩阵无法得到特征值所以需要奇异值分解。

对于一个MN的矩阵A,可以将该矩阵分解为:
A = U Σ V T A=U\Sigma V^T A=UΣVT
其中矩阵U是一个M
M的矩阵, Σ \Sigma Σ矩阵是一个M*N的对角矩阵,V矩阵是一个N*N矩阵,其中 U T U = E , V T V = E U^TU=E,V^TV=E UTU=E,VTV=E
对于矩阵A的转置和A做矩阵乘法的N*N的矩阵求解得到特征向量,将列向量张成一个N*N的V矩阵,V矩阵中的特征值为矩阵A的右奇异向量:
A T A v i = λ i v i A^TAv_i=\lambda_i v_i ATAvi=λivi

对于矩阵A和A的转置做矩阵乘法的M*M的矩阵求解得到特征向量,将列向量张成一个M*M的U矩阵,U矩阵中的特征值为矩阵A的左奇异向量:
A A T u i = λ i u i AA^T u_i=\lambda_i u_i AATui=λiui

对于矩阵 Σ \Sigma Σ而言是一个只在对角线上有值,其他的位置均为0:
A = U Σ V T A V = U Σ V T V A V = U Σ A v i = u i σ i σ i = A v i / u i A=U\Sigma V^T\\ AV=U\Sigma V^TV\\ AV=U\Sigma\\ Av_i=u_i\sigma_i\\ \sigma_i={Av_i/u_i} A=UΣVTAV=UΣVTVAV=UΣAvi=uiσiσi=Avi/ui
这样就得到每个奇异值,进而得到奇异值矩阵 Σ \Sigma Σ
还有另外一种解法:
A = U Σ V T A T = V Σ U T A T A = V Σ U T U Σ V T = V Σ 2 V T A=U\Sigma V^T\\ A^T=V\Sigma U^T\\ A^TA=V\Sigma U^TU\Sigma V^T=V\Sigma^2 V^T A=UΣVTAT=VΣUTATA=VΣUTUΣVT=VΣ2VT
这样就证明了V矩阵的解法,并且得到 Σ 2 = λ V \Sigma^2=\lambda_V Σ2=λV,进而得到 σ i = λ V i \sigma_i=\sqrt{\lambda_{Vi}} σi=λVi ,则对于矩阵 Σ \Sigma Σ可以通过求解 A T A A^TA ATA的特征值求解出来。

对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说:
A m × n = U m × m Σ m × n V n × n T ≈ U m × k Σ k × k V k × n T A_{m \times n} = U_{m \times m}\Sigma_{m \times n} V^T_{n \times n} \approx U_{m \times k}\Sigma_{k \times k} V^T_{k \times n} Am×n=Um×mΣm×nVn×nTUm×kΣk×kVk×nT
其中k要比n小很多,也就是一个大的矩阵A可以用三个小的矩阵 U m × k , Σ k × k , V k × n T U_{m \times k},\Sigma_{k \times k} ,V^T_{k \times n} Um×k,Σk×k,Vk×nT来表示

SVD与PCA

在PCA中需要得到样本的协方差矩阵 A T A A^TA ATA最大的前q个特征向量,用这个前q个向量用来做低维投影降维。在SVD计算中不用做特征分解也可以求解出右奇异值矩阵V,这样做在样本量很大时节省时间。
对于SVD的左奇异值U矩阵,得到 X X T XX^T XXT最大的前d个特征向量张成的M*D维矩阵,做以下处理:
X ^ d × n = U d × m T X m × n \hat{X}_{d\times n}=U^T_{d\times m}X_{m\times n} X^d×n=Ud×mTXm×n
这样就得到一个d*n的矩阵,这个矩阵和原来的矩阵相比行数减少了,这样就完成了对数据的压缩(可以认为是每一维度是一个样本,每个样本是一个特征,对特征就行压缩)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值