svd奇异值分解_SVD 奇异值分解

矩阵分解,是将一个矩阵分解成多个矩阵相乘的形式。常用的三种方法有三角分解法,QR分解法,奇异值分解法(SVD)。奇异值分解是应用广泛的一种矩阵分解方法,任何一个矩阵都有一个SVD分解,SVD在数据压缩、去噪、图像处理中有重要应用。 1. 特征值分解 了解SVD,首先来看矩阵特征值分解。 特征值分解满足条件为: 假设矩阵A为实对称矩阵(如果一个n阶矩阵A中所有元素都是实数,并且Aij=Aji,则称A为实对称矩阵),A可以分解为如下形式:
A=V*diag(\lambda)*V^(-1)

其中V是由A的特征向量构成的矩阵,diag(\lambda)是由A的特征值构成的对角阵。

18d1a115b1967767061ad6e3b8e45a7a.png

SVD与特征值分解的形式类似,不同的是SVD将矩阵A分解成了U、S(Sigma)、V三个矩阵,不同的是任何矩阵都能进行特征值分解,且S矩阵不一定为方阵。 2. SVD矩阵奇异值分解 A=U.S.V^(-1)

对角矩阵S对角线上的元素称为A的奇异值,U的列向量称为左奇异向量,V的列向量为右奇异向量。用特征分解解释为:

d5cab08799b720c86daa4784654e964a.png

维度信息:A(MxN), U(MxM), S(MxN), V(NxN) 3. SVD应用——压缩

SVD在图像中可以实现压缩,重构图像的效果。由于奇异值可以看作是图像的表示标志,并且奇异值越大,它所包含的图像信息也就越多,因此完全可以选取较大的一些奇异值来对图像进行重构。

原始图像如下,shape=(1800,1200,3),过程:reshape——构建USV(分别选取120,360,600个奇异值)——图像重组——plot

e2cedc8b46740010bfc71ef0a5afcef2.png

导入图像,构建USV

ed2d3a9ace111cd8ed9cc36930abb7e9.png

重构图像:

cf27eaa0a3e20b0c73732e9874ef6d40.png

画图:

d6d0f1c8f9a9c77244c9b6ee8183778f.png

输出结果为:

7ee3878fd4d1bb0a10fb7ad84785b74b.png

奇异值函数svd()的输出是按照从大到小的顺序排列的,并且奇异值下降很快,因此选取值比较大的前面的一些奇异值完全可以还原图像。

4. SVD应用——降维

SVD的另一大常见应用是降维,当矩阵的列数多于行数(特征数大于观察样本数)时,通过一次SVD操作可以得到一个维度更小的与预测结果相关的矩阵(与原始矩阵相似)

实现:在原始矩阵上使用一次SVD操作,接着选取前k个最大奇异值,这些列可以从S(Sigma)矩阵中选择,行可以从V^T矩阵中选择。scipy库与scikit-learn库中有相应的SVD方法。构建一个列多于行的矩阵,执行一次SVD,选择前两个奇异值,然后这些元素再重新结合起来,得到原始矩阵的准确再现。最后计算转换的方式有两种。

TruncastedSVD类: n_components = 指定奇异值个数

ba0a006b2d9fc9c1d15b3c6cc7123263.png

原始的矩阵是(3,5),经过转化得到相似矩阵(3,2)

e176e082616bbab81b704cb51e8164bd.png

Scipy 方法:算法流程

b833f91741aa47ceeb6bafbf9ee1a80e.png

参考: 

1. 机器之心:https://www.jiqizhixin.com/articles/0301?from=synced&keyword=SVD

2. 博客园:https://www.cnblogs.com/endlesscoding/p/10033527.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值