详细且透彻的分析PCA原理
前两天面试问到了PCA,感觉讲得不是很透彻,这里再次详细写一下。
首先定义如下变量的含义:
X:Rn*m,n个样本m个属性,对于第i个样本xi:R1*m。
W:Rm*k,k个正交的单位正交的列向量组成的矩阵,投影矩阵,把原来的m维降到k维。对于第i个维度wi:Rm*1。
投影后的样本矩阵X' = X×W:Rn*k,对于投影后的第i个样本xi' = xi×W:R1*k。
我们做PCA的目的是找出一个投影矩阵W(也就是k个单位向量)使得样本投影后的方差最大。其实理解了加粗的这句话,就已经对PCA有相当的了解了。如何理解方差最大?答:方差大说明投影后的样本之间相互分离程度比较好,相比于较小的方差,原样本的特征得到了有效保存。这个方差从数学上表示为投影到各个维度的方差之和。
记住,作PCA之前要做的一件事是对原始样本矩阵X,按列中心化。比如对 Xij ==> Xij-M(j),其中M(j)表示第j列(也就是第j种属性)的均值。为什么要这么做?这是因为这个操作使得X每一列均值为0,可以大大简化后面计算方差的公式。(D(a)=E( (a-avg(a))·(a-avg(a)) ),如果avg(a)=0,那么D(a)=E(a^2))
对投影后的矩阵X' = X×W,因为X被我们按列中心化了,即∑xi=0,那么∑xi' = ∑ (xi×W) = (∑xi)×W = 0,也就是说投影后列均值为0的性质依然得到了保持。
接下来,我们考虑要优化的目标,方差。先考虑将所有样本投影到单个维度wi的情况,即X×wi:Rn*1,他表示这n个样本分别在这一个维度的坐标。
根据上面的分析,有∑ (xi×wi)=0,即E(X*wi)=0,(注意此处要把wi看成是定值)。于是就有了下面的推算:

对所有投影方向的方差进行求和,加上原来每个投影向量长度为1的约束,就得到了我们下面的优化问题。

由于是等式约束,我们很容易就可以写成拉格朗日形式如下,(λ前面漏掉了求和符号,sorry)

是的对wi求导,得到如下(由于λ是拉格朗日乘子,本身它的乘数不需要关心)

显然,△等式的wj和λ的解就是XTX做特征值分解对应的特征向量和特征值。
那么,有了特征值分解后,我们应该选哪些特征向量及其对应的特征值呢? 都知道是从最大的开始选,为什么呢?
对△等式进行简单变化,等式两边同时左乘wjT,变成下面的等式,

注意到,该等式说明了特征值λj对应的就是wj方向投影的方差,而我们的目标是要最大化所有的方差和。可选的范围是固定,显然我们从大的特征值开始选就行了。这就从数学上解释了为什么我们要从大的特征值开始进行选择(面试的时候问到了,当时只进行感性上的解释,确实没有这样列出来有说服力)。
还有一个trick要注意的是,如果给出了低维空间中的坐标,要复原在原空间的坐标时,要对每一个维度加上对应的均值,这是因为在做PCA之前进行了中心化处理。
怎么样? 是不是与书籍上的写法不一样呢?
详细且透彻的分析PCA原理的更多相关文章
- 主元分析PCA理论分析及应用
首先,必须说明的是,这篇文章是完完全全复制百度文库当中的一篇文章.本人之前对PCA比较好奇,在看到这篇文章之后发现其对PCA的描述非常详细,因此迫不及待要跟大家分享一下,希望同样对PCA比较困惑的朋友 ...
- Kernel PCA 原理和演示
Kernel PCA 原理和演示 主成份(Principal Component Analysis)分析是降维(Dimension Reduction)的重要手段.每一个主成分都是数据在某一个方向上的 ...
- 主成分分析(PCA)原理与实现
主成分分析原理与实现 主成分分析是一种矩阵的压缩算法,在减少矩阵维数的同时尽可能的保留原矩阵的信息,简单来说就是将 \(n×m\)的矩阵转换成\(n×k\)的矩阵,仅保留矩阵中所存在的主要特性,从 ...
- PCA原理与实践
在对数据进行预处理时,我们经常会遇到数据的维数非常之大,如果不进行相应的特征处理,那么算法的资源开销会很大,这在很多场景下是我们不能接受的.而对于数据的若干维度之间往往会存在较大的相关性,如果能将数据 ...
- 超详细的Guava RateLimiter限流原理解析
超详细的Guava RateLimiter限流原理解析 mp.weixin.qq.com 点击上方“方志朋”,选择“置顶或者星标” 你的关注意义重大! 限流是保护高并发系统的三把利器之一,另外两个是 ...
- MyBatis 源码分析 - 缓存原理
1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...
- Tomcat源码分析——请求原理分析(下)
前言 本文继续讲解TOMCAT的请求原理分析,建议朋友们阅读本文时首先阅读过<TOMCAT源码分析——请求原理分析(上)>和<TOMCAT源码分析——请求原理分析(中)>.在& ...
- 机器学习之主成分分析PCA原理笔记
1. 相关背景 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律.多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的 ...
- 降维算法----PCA原理推导
1.从几何的角度去理解PCA降维 以平面坐标系为例,点的坐标是怎么来的? 图1 ...
随机推荐
- docker数据卷管理及网络基础配置
数据卷 数据卷容器 数据卷迁移数据 端口映射 容器间通信 数据卷的管理 当需要查看容器内应用产生的数据或者把容器内数据备份及多个容器数据共享.有两种方式,数据卷以及数据卷容器. 数据卷 数据卷是一个可 ...
- java语言基础1问题汇总
1.一个Java类文件中真的只能有一个公有类吗? 程序实验: public class test1 { public static void main( String args[] ){ } publ ...
- Ionic app 通知在Moto 360 Watch上显示通知(1)
手机与Moto 360 watch配对之后,watch上会接收到微信消息的通知,那么我们就可以利用这个特性开发一个App,在Watch显示我们自己的通知,具体过程如下 1.手机扫描二维码安装ticwa ...
- 校内模拟赛 旅行(by NiroBC)
题意: n个点的无向图,Q次操作,每次操作可以连接增加一条边,询问两个点之间有多少条边是必经之路.如果不连通,输出-1. 分析: 首先并查集维护连通性,每次加入一条边后,如果这条边将会连接两个联通块, ...
- linux中fork, source和exec的区别
转:linux中fork, source和exec的区别 shell的命令可以分为内部命令和外部命令. 内部命令是由特殊的文件格式.def实现的,如cd,ls等.而外部命令是通过系统调用或独立程序实现 ...
- [HNOI2018]游戏[拓扑排序]
题意 题目链接 分析 先将没有锁的房间缩点,首先有一个 \(O(n^2)\) 的想法:从每个点出发,每次检查能否向两边扩张. 容易发现门和门之间如果有锁,必然只有一方能够开锁(只有一把钥匙),并且能够 ...
- Stencil 基础
Stencil 一个轻量化,渐进式编译器,注意,不是框架. 使用 TypeScript 进行所有操作,这是一个门槛,有一定技术门槛要求. PS:个人强烈推荐所有的前端同学都学习,或至少了解这个超集语言 ...
- Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结
一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...
- Python迭代器(Iterator)
概述 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你 ...
- hashContext
java.lnag.Object中对hashCode的约定: 1. 在一个应用程序执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,则对该对象调用hashCode方法多次,它必 ...