PCA本质和SVD
一、一些概念
线性相关:其中一个向量可以由其他向量线性表出。
线性无关:其中一个向量不可以由其他向量线性表出,或者另一种说法是找不到一个X不等于0,能够使得AX=0。如果对于一个矩阵A来说它的列是线性无关的,则AX=0,只有0解,此时矩阵A可逆。
秩:线性无关向量个数。
基:

特征向量:向量X经过矩阵A旋转后,与原来的X共线,
。
即为特征值,表示向量的伸缩。如果把矩阵看成进行线性变化的矩阵(旋转,拉伸),那么特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。反过来,特征向量组成的正交底恰恰也是一种变换,将矩阵从一个空间映射到另一个空间。
特征分解:

如果矩阵A是对称矩阵,那会得到一个更强的特征分解,A可实现U对角化,即正交对角化。特征向量U正交:

二、PCA的本质(协方差矩阵对角化,对称矩阵特征分解)
数据量太大的时候,需要降维。怎么降呢?需要保证维度减少,但同时信息量保留的最多,转换成数学术语就是每个行向量的方差尽可能大(方差代表信息),行向量间的协方差为0(让行与行之间尽量不相关,信息尽量转移到某几个单独的变量上,从而实现降维)。下面以矩阵X为例进行讲解,假设拿到的数据是矩阵X ,

它的协方差矩阵则为(标准化数据以后):

有两步需要做1.现在希望的是降维后的协方差矩阵对角元尽可能大(信息量足够多),非对角元尽可能为0(行与行之间无关,如果相关说明没有降维成功),即变成一个对角矩阵。因此我们需要对X做一个线性变换,使得做线性变换后的矩阵的协方差矩阵变成对角矩阵(相当于变化新的坐标)。而怎么线性变换呢?具体如下图,使得Q=Ut时,Cy就会变成一个对角矩阵,这时候需要用到前面的特征值分解,因为Cx是对称矩阵,所以可以进行特征分解:

2.Cy变成对角矩阵后,我们如何降维呢?此时需要将对角元上的特征值进行排序,此时可以把特征值小的那部分对应的信息丢掉,此时就达到了降维的目的。特征值此时代表的就是信息量的大小。具体如下图中的例子:

Python中用到的代码:
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
pca就是寻找协方差矩阵的特征值,特征向量,找到方向最大的变异方向(特征向量),再找到跟它正交的,如此下去找到n个主成分。需要先标准化,因为是通过最大化线性组合方差得到,所以对变量的测量尺度敏感。
三、SVD分解(奇异矩阵分解)
前面讲到的对称矩阵的分解才能实现正交对角化(UT=U-),而对称矩阵是建立在Rn*n的空间,而对于任意秩为R的矩阵A属于Rm*n的空间时,能不能找到类似的分解呢?答案是可以滴,这就是SVD分解了, 为奇异值,且
大于0。

SVD与特征分解有没有什么关系呢?
奇异值就是A*AT非零的特征值开根号。在PCA应用中,协方差矩阵是正定矩阵,而正定矩阵(一定是对称矩阵)的奇异分解实质等价于特征分解。

SVD同样可以进行降维。

PCA本质和SVD的更多相关文章
- 机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD
PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...
- PCA算法和SVD
如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值.这里可以将特征值为负,特征向量旋转180度,也可看成方向不变,伸缩 ...
- 主成分分析(PCA)与SVD奇异值分解
主要参考:https://www.zhihu.com/question/38417101/answer/94338598 http://blog.jobbole.com/88208/ 先说下PCA ...
- K-L变换和 主成分分析PCA
一.K-L变换 说PCA的话,必须先介绍一下K-L变换了. K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换.它是建立在统计特性基础上的一种变换,有的文献也称其为霍特林(Hot ...
- 特征向量、特征值以及降维方法(PCA、SVD、LDA)
一.特征向量/特征值 Av = λv 如果把矩阵看作是一个运动,运动的方向叫做特征向量,运动的速度叫做特征值.对于上式,v为A矩阵的特征向量,λ为A矩阵的特征值. 假设:v不是A的速度(方向) 结果如 ...
- PCA, SVD以及代码示例
本文是对PCA和SVD学习的整理笔记,为了避免很多重复内容的工作,我会在介绍概念的时候引用其他童鞋的工作和内容,具体来源我会标记在参考资料中. 一.PCA (Principle component a ...
- PCA算法详解——本质上就是投影后使得数据尽可能分散(方差最大),PCA可以被定义为数据在低维线性空间上的正交投影,这个线性空间被称为主⼦空间(principal subspace),使得投影数据的⽅差被最⼤化(Hotelling, 1933),即最大方差理论。
PCA PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量 ...
- PCA降维的原理、方法、以及python实现。
PCA(主成分分析法) 1. PCA(最大化方差定义或者最小化投影误差定义)是一种无监督算法,也就是我们不需要标签也能对数据做降维,这就使得其应用范围更加广泛了.那么PCA的核心思想是什么呢? 例如D ...
- 数据降维技术(1)—PCA的数据原理
PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...
随机推荐
- 高阶Laplace曲面形变算法(Polyharmonic Deformation)
数学上曲面的连续光滑形变可以通过最小化能量函数来建模得到,其中能量函数用来调节曲面的拉伸或弯曲程度,那么能量函数最小化同时满足所有边界条件的最优解就是待求曲面. 能量函数通常是二次函数形式: 其中S* ...
- Eclipse使用svn文章列表
http://www.cnblogs.com/duanxz/p/3334660.html http://www.cnblogs.com/duanxz/p/3334660.html http://130 ...
- LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别
LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别 在写LINQ语句的时候,往往会看到.AsEnumerable() 和 .AsQueryable() .例如: s ...
- 用延迟加载解决CNZZ加载慢的问题
我是不太喜欢CNZZ的, 不过既然公司要用, 还是得加, 这个公司不知道为什么不好好优化一下, 这么多功能都做了, 难道不愿意多费几分钟优化一下这个特别影响用户体验的统计代码? 现在的移动站页面, 是 ...
- 第一个Android应用--签证无忧 上线
用了大概1个多星期的时间,把一个简单的应用完成,[签证无忧]是基于在我所在公司办理签证的前提下,为方便客户查询进度所开发,后来我加了淘宝的购买链接,这样客人在以后需要时不需要到淘宝查找了. 签证无忧这 ...
- 处理 pcap 中的 mac 二进制字节流为可读格式
import struct # 利用 struct 处理字节流中的mac地址 适用于小端地址操作系统 def mac2str(bi_mac): mac = "" for i in ...
- bzoj3343
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1178 Solved: 527[Submit][Status][Discus ...
- 自定义View其实很简单系列1-12
作者: AigeStudio http://blog.csdn.net/aigestudio 说明:文中的1/12表示12篇中的第1篇, 1/6=2/12表示12篇中的第2篇,其它类似. 自定义控件 ...
- gulp复制整个文件夹或文件到指定目录(包括拷贝单个文件)
整个目录: gulp.task('copy', function() { return gulp.src('src/**/*') .pipe(gulp.dest('dist')) }); gulp拷贝 ...
- 基于Arduino、STM32进行红外遥控信号接收
catalogue . 遥控器原理简介 . 红外遥控原理 . 常见红外遥控器红外线信号传输协议 . 遙控器的发展 . 实验过程 . 攻击面 . 基于STM32实现红外信号解码 1. 遥控器原理简介 0 ...