PCA主成因分析法
2015-11-22 18:28
253 查看
PCA算法的最终目标是把高维数据进行降维。之所以要降维,是因为数据在低维空间中处理起来更简单。可以用一个最简单的例子来说明降维,在三维空间中有一个球,我们可能希望研究一下球的几何性质,这个时候希望把它画在纸上(二维平面),那么怎么把它投影(project)到二维平面上就是一个降维的过程。这里的关键在于你投到二维平面上时,要看起来仍然要和原来在三维空间中的那个球达到最大相似,你不能把一个球经过降维之后变成了一个圆。而这正是PCA要干的事情,识别出原空间中最重要的多个特征(最重要的特征才能做到最相似)。这算是刚开始以一种最直观的方式看PCA。
假设针对一个物体进行建模,拥有了m维的数据,但其中有两维的数据是线性相关的,即知道其中一个数据,就能推测出另一个数据。我们要做的就是找出这种线性相关的数据,并把它剔除掉,同时尽可能的保证原有的数据信息。
PCA过程:
输入10组2维的数据,将其简化为k维的数据。
1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性)。
2.用1中处理过的矩阵求特征协方差矩阵。
其协方差为非对角线的上的值
3.求特征值与特征向量
4.取特征值前k大个,重新组成矩阵
5.将样本点重新投影到4中的矩阵上
即将2维数据化简为1维。
在坐标系中画出上面数据的图:
左下角至右上角这条线即我们最终化简留下的那一维,第五步也就是将原始数据投影到这条线上。
PCA有两种解释。
其一是PCA可看成是被定义为原数据空间在一个更低维的线性空间的正交投影,并且数据在低维空间上的投影的方差是最大的。我们都知道方差是用来描述数据间的波动的,通过之前的分析,已经明白我们是希望留下来的数据尽量不相关,那是不是可以简单地认为数据间尽量要有波动。上面这条线就是最符合这个标准的那条线。这种解释叫最大方差。
PCA的另一种解释就是最小平方误差。即红色点到紫色点的距离和最小,这其实和第一种解释本质是差不多的,一种是点到直线距离最短,一种是点到直线投影值差最大。
假设针对一个物体进行建模,拥有了m维的数据,但其中有两维的数据是线性相关的,即知道其中一个数据,就能推测出另一个数据。我们要做的就是找出这种线性相关的数据,并把它剔除掉,同时尽可能的保证原有的数据信息。
PCA过程:
输入10组2维的数据,将其简化为k维的数据。
1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性)。
2.用1中处理过的矩阵求特征协方差矩阵。
其协方差为非对角线的上的值
3.求特征值与特征向量
4.取特征值前k大个,重新组成矩阵
5.将样本点重新投影到4中的矩阵上
即将2维数据化简为1维。
在坐标系中画出上面数据的图:
左下角至右上角这条线即我们最终化简留下的那一维,第五步也就是将原始数据投影到这条线上。
PCA有两种解释。
其一是PCA可看成是被定义为原数据空间在一个更低维的线性空间的正交投影,并且数据在低维空间上的投影的方差是最大的。我们都知道方差是用来描述数据间的波动的,通过之前的分析,已经明白我们是希望留下来的数据尽量不相关,那是不是可以简单地认为数据间尽量要有波动。上面这条线就是最符合这个标准的那条线。这种解释叫最大方差。
PCA的另一种解释就是最小平方误差。即红色点到紫色点的距离和最小,这其实和第一种解释本质是差不多的,一种是点到直线距离最短,一种是点到直线投影值差最大。
![](http://www.gumpcs.com/wp-content/uploads/2014/04/21-293x300.png)
相关文章推荐
- Ajax实现简单下拉选项
- learn go return fuction
- 【BZOJ】4056: [Ctsc2015]shallot
- HDU 2612 Find a way(bfs)
- Thinking in Google Doc-不同的Apps之间的交互
- 1317 相似字符串对
- CSS3 使用自定义字体
- matlab:逐个读取文件夹里以数字命名的图片
- HDU 5568 dp+大数板子
- OpenCV 2.4.11 VS2010 Configuration
- 支付宝手机网站支付私钥公钥生成(window环境)
- java从类路径下加载资源文件
- 反向代理的概念
- Using Caliburn.Micro (version 2) for WPF development
- c#中调用存储过程示例
- Can not find the tag library descriptor for “http://java.sun.com/jsp/jstl/core
- Windows窗体应用布局详解
- STL——算法简介
- EJB的来源
- xcode7.1.1版本中,swift获取字符串长度