这篇文章内容主要来自于下面的博客,个人对其理解和整理下。
http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html


奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要特性。让机器学会抽取重要的特征,SVD是一个重要的方法。
像描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力。

一、特征值与奇异值基础知识:

特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。
1、特征值分解和特征值
方阵A有一个特征向量v,将可以表示成下面的形式:

这时候λ就被称为特征向量v对应的特征值。
一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:

其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。

  • 一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量得到的向量,其实就相当于对这个向量进行了线性变换。如果想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。
  • 看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。
  • 当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征

总结一下:特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵

2、奇异值分解和奇异值
奇异值分解是一个能适用于任意的矩阵的一种分解的方法:

假设: A是一个M * N的矩阵
那么:
U是一个M * M的方阵(里面的向量是正交的,U里面的向量称为左奇异向量)
Σ是一个M * N的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值)
VTV^{T}VT是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)
从图片来反映几个相乘的矩阵的大小可得下面的图片:

那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 ATA^{T}ATx A,将会得到一个方阵,我们用这个方阵求特征值可以得到:

这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:

σ就是上面说的奇异值,奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。
u就是上面说的左奇异向量。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:

r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

二、奇异值与主成分分析(PCA):

1、PCA
  PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们用于机器学习的数据(主要是训练数据),方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。以下面这张图为例子:

这个假设是一个摄像机采集一个物体运动得到的图片,上面的点表示物体运动的位置,假如我们想要用一条直线去拟合这些点,那我们会选择什么方向的线呢?当然是图上标有signal的那条线。如果我们把这些点单纯的投影到x轴或者y轴上,最后在x轴与y轴上得到的方差是相似的(因为这些点的趋势是在45度左右的方向,所以投影到x轴或者y轴上都是类似的),如果我们使用原来的xy坐标系去看这些点,容易看不出来这些点真正的方向是什么。但是如果我们进行坐标系的变化,横轴变成了signal的方向,纵轴变成了noise的方向,则就很容易发现什么方向的方差大,什么方向的方差小了。
一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向,我们在数据挖掘中或者数字信号处理中,往往要提高信号与噪声的比例,也就是信噪比。对上图来说,如果我们只保留signal方向的数据,也可以对原数据进行不错的近似
PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小
还是假设我们矩阵每一行表示一个样本,每一列表示一个feature,用矩阵的语言来表示,将一个m * n的矩阵A的进行坐标轴的变化,P就是一个变换的矩阵从一个N维的空间变换到另一个N维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。

而将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得本来有n个feature的,变成了有r个feature了(r < n),这r个其实就是对n个feature的一种提炼,我们就把这个称为feature的压缩。用数学语言表示就是:

2、SVD
SVD对列压缩,相当于PCA提取主要特征
但是这个怎么和SVD扯上关系呢?之前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…我们回忆一下之前得到的SVD式子:

在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以VTV^{T}VT乘以V得到单位阵I,所以可以化成后面的式子

将上面第二个式子与PCA中将m * n的矩阵变换为m * r的矩阵的式子对照看看,在这里,其实V就是P,也就是一个变化的向量。
这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩。

SVD对行压缩,相当于剔除没有太大价值的sample
如果我们想对行进行压缩(在PCA的观点下,对行进行压缩可以理解为,将一些相似的sample合并在一起,或者将一些没有太大价值的sample去掉)怎么办呢?同样我们写出一个通用的行压缩例子:

这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U的转置UTU^{T}UT

这样我们就得到了对行进行压缩的式子。可以看出,其实PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了,而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A进行特征值的分解,只能得到一个方向的PCA。

奇异值与主成分分析(PCA)相关推荐

  1. 主成分分析(PCA)简介

    主成分分析(Principal Components Analysis, PCA)是一个简单的机器学习算法,可以通过基础的线性代数知识推导. 假设在Rn空间中我们有m个点{x(1),-,x(m)},我 ...

  2. 7.4.5 鲁棒主成分分析 PCA

    7.4.5 鲁棒主成分分析 PCA 根据每个样本点数据 ai\mathbf{a}_{i}ai​ 在第一主方向 u1\mathbf{u}_1u1​ 上的投影的方差最大,知样本点在此方向最分散,为第一主方 ...

  3. 7.4.4 主成分分析 PCA

    7.4.4 主成分分析 PCA 假设我们研究的对象具有相关属性,令属性向量为 x=(x1,x2,⋯,xm)\mathbf{x} = (x_1,x_2,\cdots,x_m)x=(x1​,x2​,⋯,x ...

  4. 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)

    文章目录 0. 前言 1. 主成分分析PCA 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 维数灾难:在高维情形下出现的数据样本稀疏.距离计算困难等问题. 缓解 ...

  5. 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

    最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出.降维技术之一是主成分分析 (PCA) 算法,该算法将可能相关变量的一组观察值转换为一组线性不相关变量.在本文中,我们将讨论 ...

  6. 主成分分析(PCA)原理及推导

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分 ...

  7. 【机器学习sklearn】主成分分析PCA(Principal Component Analysis)

    主成分分析方法PCA 前言 一.PCA是什么? 二.代码实践 使用MNIST数据集实现sklearn库里的主成分分析方法 不同主成分个数对应的可解释方差分析(Explained Variance) 总 ...

  8. 【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)

    这节的内容需要一些线性代数基础知识,如果你没听懂本文在讲什么,强烈建议你学习[官方双语/合集]线性代数的本质 - 系列合集 文章目录 奇异值分解 线性变换 特征值和特征向量的几何意义 什么是奇异值分解 ...

  9. 机器学习-Sklearn(第三版)Day4 主成分分析PCA与奇异值分解SVD

    目录 一.简介 什么是维度 sklearn中的降维算法 二.PCA与SVD 0.如何实现降维算法 思考:PCA和特征选择技术都是特征工程的一部分,它们有什么不同? 1.重要参数n_components ...

最新文章

  1. java基础学习总结——接口
  2. 北大OJ百练——4074:积水量(C语言)
  3. python中进程池的应用
  4. Python学习3 字符串和相关常用函数
  5. Android远程服务与本地服务的特点以及功能差异
  6. Android Support Annotations
  7. python3 模块详细解释_详解Python3中的contextvars模块
  8. RFID技术与应用 复习用
  9. 计算机音乐简谱网红歌曲,2020抖音网红歌曲40首 2020抖音最新歌曲100首BGM
  10. 文档翻译免费工具(网页版)PDF翻译,word翻译
  11. 拼多多秒杀活动的谣言
  12. 伪随机数的产生和流密码
  13. GPL授权GPL到底是什么?为什么MySQL可以收费?
  14. 《C专家编程》之 安静的改变
  15. 山东法律学校97级计算机班,我校计算机学院97级计算机专业校友重聚母校
  16. git commit -m XX报错 pre -commit hook failed (add --no-verify to bypass)问题
  17. Scheme 语言开发工具DrRacket下载,安装
  18. 狸窝刻录软件-附带光盘刻录教程
  19. Cisco模拟计算机网络设计:某工厂园区网有:2个分厂(分别是:零件分厂、总装分厂)+1个总厂网络中心 + 1个总厂会议室;
  20. KUKA ii感你所感:LBR iiwa开启灵敏型机器人新纪元

热门文章

  1. Python学生信息管理系统的开发
  2. BZOJ 4602: [Sdoi2016]齿轮 dfs
  3. 让算法会说话之冒泡排序
  4. 权限角色管理学习(二)
  5. 与集群相关软件安装及其配置顺序
  6. Err:error occurred at recursive SQL level 1
  7. mysql空间数据类型的使用_MYSQL 空间数据类型用法
  8. 杨云 中科院计算机所,专家人才库数据----中国科学院计算技术研究所
  9. oracle+基本内置函数,oracle 内置函数
  10. windows 串口中断编程_万变不离其宗之单片机串口共性问题