详细的介绍请参考这篇博客:SVD奇异值分解

SVD奇异值分解是用来对矩阵进行分解,并不是专门用来求解特征值特征向量
求解特征值求解特征向量,可以选择使用SVD算法进行矩阵分解后,再用矩阵分解后的结果得到特征值特征向量

我们先回顾一下SVD:

PCA降维需要求解协方差矩阵特征值特征向量,而求解协方差矩阵1m∗X∗XT\color{blue}\frac{1}{m}*X*X^Tm1​∗X∗XT的特征值和特征向量,又可以等价于SVD的其中一种求解矩阵A的三个分解矩阵的方法。

该方法即,利用A∗AT\color{blue}A*A^TA∗AT和AT∗A\color{blue}A^T*AAT∗A来求解A的三个分解矩阵。

所以求出了A的三个分解矩阵,就可以从A的分解矩阵中,间接得到A∗AT\color{blue}A*A^TA∗AT的特征值和特征向量(这是因为A的三个分解矩阵是和A∗AT\color{blue}A*A^TA∗AT的特征值、特征向量是有关系的),同时也是协方差矩阵1m∗X∗XT\color{blue}\frac{1}{m}*X*X^Tm1​∗X∗XT的特征值和特征向量。

上面的博客中介绍的SVD奇异值分解的方法中,并没有用到协方差矩阵,不要误解为AT∗A\color{blue}A^T*AAT∗A就是协方差矩阵,因为他们并没有减去均值的操作。并且该SVD的实现算法有很多种,可以不用先求出矩阵AT∗A\color{blue}A^T*AAT∗A ,也能求出我们的右奇异矩阵V

SVD奇异值分解是使用特殊方法来求解出矩阵的左奇异矩阵U和右奇异矩阵V。但是求解UV的方法有很多种,并非只有使用 AT∗A\color{blue}A^T*AAT∗A这一个方法,而且计算矩阵AT∗A\color{blue}A^T*AAT∗A这个方法计算量太大,不合适。该博客是以这种方法为例,所以这一点需要明白。

需要注意的是,是在PCA降维中才使用了协方差矩阵: XT∗X\color{blue}X^T*XXT∗X ,每个维度都做了减去均值的操作后,得到的协方差矩阵就变为了SVD奇异值分解中用到的那种矩阵转置*矩阵的形式,请参考博客深入理解PCA与SVD的关系的第三节。这样,求解的问题就变得一样了

所以,PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。

实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。


PCA降维的方法有下面几种:

(1)直接对样本数据组成的矩阵Xn*n进行求解特征值和特征向量:

这种方式可能是初学者最直接就想到的,他是一种暴力求解方式,当样本特征维度很大时,求解耗时,还可能是复数解。并且,该方法有个硬伤,必须是方阵,即n∗n\color{blue}n*nn∗n的矩阵才能求解特征值和特征向量。


(2)计算协方差矩阵,通过变换矩阵转换来降低维度:


对样本矩阵Xn∗m\color{blue}X_{n*m}Xn∗m​进行下面操作:

  • X的各个维度 均值;
  • X的各个维度减去该维度均值,再赋值给X,即in place就地操作;
  • 计算X的协方差矩阵 C=1m∗X∗XT\color{blue}C=\frac{1}{m}*X*X^TC=m1​∗X∗XT;
  • 对协方差矩阵 C特征值分解;
  • 从大到小排列C的特征值;
  • 取前K个特征值对应的特征向量按行组成矩阵即为变换矩阵Pk∗n\color{blue}P_{k*n}Pk∗n​;
  • Y=P∗X\color{blue}Y=P*XY=P∗X,得到的Y就是降维后的数据。

该方法会因为:

  • (1) 特征维度很大而使得协方差矩阵 C=1m∗X∗XT\color{blue}C=\frac{1}{m}*X*X^TC=m1​∗X∗XT计算量很大
  • (2) 计算出了协方差矩阵后,对协方差矩阵的特征分解的计算效率并不高;

所以也不合适。


(3)将PCA问题转化为SVD问题求解:

SVD奇异值分解是使用特殊方法来求解出矩阵的左奇异矩阵U和右奇异矩阵V。但是求解UV的方法有很多种,并非只有使用 AT∗A\color{blue}A^T*AAT∗A这一个方法,而且计算矩阵AT∗A\color{blue}A^T*AAT∗A 这个方法计算量太大,不合适。该博客是以这种方法为例,所以这一点需要明白。

SVD的实现算法有很多种,可以不用先求出矩阵 X∗XT\color{blue}X*X^TX∗XT,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。
实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解

所以,在第二种方法的基础上,我们求协方差矩阵的计算量很大,就把计算协方差矩阵转化为SVD问题求解,令:

就有:

所以:

  • 求X\color{blue}XX的协方差矩阵 C=1m∗X∗XT\color{blue}C=\frac{1}{m}*X*X^TC=m1​∗X∗XT 的特征分解,等价于求AT∗A\color{blue}A^T*AAT∗A的特征分解;
  • 又因为,AT∗A\color{blue}A^T*AAT∗A的特征分解可以不用求出AT∗A\color{blue}A^T*AAT∗A,而是利用SVD的其他迭代方法得到A\color{blue}AA的SVD分解左奇异矩阵U\color{blue}UU、右奇异矩阵V\color{blue}VV和奇异值矩阵Λ\color{blue}\LambdaΛ;
  • 通过右奇异矩阵V\color{blue}VV 和奇异值矩阵Λ\color{blue}\LambdaΛ(对角阵),得到AT∗A\color{blue}A^T*AAT∗A的特征值和特征向量。即每个特征值对应一个奇异值的平方,每个特征向量对应右奇异矩阵V\color{blue}VV的每列向量;
  • 求出了特征值和特征向量,取前 k\color{blue}kk 个,就能够求出第二种方法里面的变换矩阵Pk∗n\color{blue}P_{k*n}Pk∗n​,然后再计算Y=P∗X\color{blue}Y=P*XY=P∗X,得到的Y\color{blue}YY就是降维后的数据。

PCA的性质:
可参考:【机器学习】降维——PCA(非常详细)

PCA主成分分析,他是用来降低特征维度(把每个样本的n个特征缩减为主要的k个特征);

用在图像压缩时,它降低的特征维度并不是指把图像长宽缩小,而是把原来的存储图像像素矩阵变成存储(SVD奇异值分解得到的)特征向量和特征值,如下,A是图像像素矩阵(请参考:奇异值的物理意义是什么):

【数学和算法】SVD奇异值分解原理、以及在PCA中的运用相关推荐

  1. 【数学和算法】奇异值分解在【图像压缩】中的应用

    图片压缩 这篇博客奇异值的物理意义是什么有例子分析使用奇异值分解来进行图像压缩与图像去噪,并且对于不是方阵的矩阵也可以分解. 下面这个图像压缩例子是以方阵图像为例,使用暴力分解得到特征值和特征向量.但 ...

  2. 数学建模算法与应用:预测模型(3)案例: SARS 疫情对经济指标影响

    目录 问题描述: 一.建模思路 二.对模型进行分析预测 2.1.对模型进行假设 三.建立灰色预测模型GM(1,1) 3.1.模型的求解(i)商品零售额 3.2.用MATLAB程序,实现(i)商品零售额 ...

  3. 【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景

    多项式拟合曲线时使用最小二乘法,把问题化简为A*x=B的线性方程组: 然后使用LU矩阵分解算法求解线性方程组A*x=B,具体做法是: 先对矩阵A进行行初等变换得到上三角矩阵U: 再求出下三角矩阵L,就 ...

  4. SVD(奇异值矩阵分解) 转载(+师兄ppt)

    http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 一.奇异值与特征值基础知识: 特征值分解 ...

  5. 画出降维后的图片_机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD...

    PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...

  6. 其他算法-SVD奇异值分解

    目录 SVD原理 特征值分解EVD 奇异值分解SVD SVD的性质 基于Numpy的SVD图像压缩 奇异值分解即 Singular Value Decomposition,简称SVD,SVD广泛应用于 ...

  7. LL1分析构造法_数学建模算法--最优赋权法(含代码)

    数学建模算法--最优赋权法(含代码) 作者:郑铿城 本次介绍数学建模和科研写作的方法--最优赋权法最优赋权法经常用于分析评价类问题,从该算法的名称就可以看到,该算法首先要体现"最优" ...

  8. 计算机算法对程序设计的作用,计算机编程中数学算法的优化策略

    李钰 摘要:在计算机编程中,合理地运用数学算法所拥有的优势不但可以完好地针对所拥有的问题进行总结分类归纳,还可以将其归纳作为基础从而进行针对性的统一计算,并且能够将非常复杂的问题进行整体的简化并且将其 ...

  9. NLP技术路线详解:这是从数学到算法的艺术

    自然语言处理路线图详解,从数学基础.语言基础到模型和算法,这是你该了解的知识领域. 自然语言处理很多时候都是一门综合性的学问,它远远不止机器学习算法.相比图像或语音,文本的变化更加复杂,例如从预处理来 ...

最新文章

  1. 分布式服务化系统一致性的“最佳实干”
  2. cdh5.12.1 service monitor监控状态_来,我们在重新说下,线程状态?
  3. 牛客题霸 NC1 大数加法
  4. mui的学习图片预览
  5. mysql backup restore_mysql-backup-restore
  6. python vec函数_Python Word2Vec参数内容
  7. 为Clion配置mingw32或mingw64
  8. java 文件分隔符_java知识点---文件分隔符
  9. 前端常用PS技巧总结之更换图片背景图片
  10. K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署
  11. 可以帮助提升程序员高效工作效率的常用小工具推荐
  12. 【算法题】求有序数列中相邻数字之间的最大差值
  13. window10突然变成繁体怎么办呢??
  14. 促进社群活跃的几种方法,你get到了吗
  15. 【QT Graphics/View】自定义动态矩形框DyRectangle
  16. Android jetpack之Navigation
  17. 卫星图在线浏览地址大全
  18. matlab如何制作振型动画_Matlab 实时动画制作示例
  19. Abloomy设备3A认证接入实施方案
  20. 你都是会点啥技术(五)--- 数据库

热门文章

  1. lucene源码分析(7)Analyzer分析
  2. 如何设计一个小而美的秒杀系统?
  3. Load和Initialize的往死了问是一种怎样的体验
  4. 机器学习Sklearn实战——其他线性回归模型、逻辑回归
  5. 反欺诈技术揭秘-设备指纹VS关系网络模型 此博文包含图片 (2017-05-12 10:23:52)转载▼ 标签: 设备指纹 关系网络 反欺诈 神经网络模型 分类: 风控 文章来源:网络(经整合梳理
  6. 微软亚洲研究院刘铁岩博士:迎接深度学习的“大”挑战(一)
  7. 深入理解分布式技术 - 结合RocketMQ和Kafka理解MQ的两种经典模式_P2P模式和发布订阅模式
  8. MySQL - 索引下推 Index Condition Pushdown 初探
  9. 高并发编程-自定义简易的线程池(2),体会原理
  10. Java学习笔记(十一)--类与对象