原文网址:https://blog.csdn.net/sunshine_in_moon/article/details/51513880.转载主要方便随时可以查看,如有版权要求请及时联系。

相信大家对PCA并不陌生,但是PCA的本质你是否了解呢?今天就给大家简单讲讲,也是自己对PCA的一个巩固。博客中使用的图片来自七月算法的程博士的PPT,在此感谢程博士课上的耐心讲解。

1、特征值个特征向量

我相信大家对于这个式子非常熟悉,但是你真正的理解这个式子了吗?特征向量和特征值到底有什么意义呢?说实话,在听程博士的课之前我一直迷惑,不过现在懂了。

首先,我们要明确一个矩阵和一个向量相乘有什么意义?从图中我们可以看出一个矩阵和一个向量相乘的意义在于对该向量做个旋转或伸缩变换。从图中我们又发现一个矩阵和该矩阵的非特征向量相乘是对该向量的旋转变换;一个矩阵和该矩阵的特征向量相乘是对该向量的伸缩变换。那一个实数和一个向量相乘有什么意义呢?这个我们很清楚是对一个向量的伸缩变换。

发现了没?一个矩阵和一个向量相乘与一个实数和一个向量相乘的联系找到了----“对该向量伸缩变换”。

通过以上分析,我们就明白了特征值和特征向量是什么了?特征向量就是一个在矩阵A的变换下没有旋转只是伸缩变换,那到底伸缩了多少倍呢?伸缩了“特征值”倍。

2、看几条特征值分解的性质

重点在下面

我们发现一个矩阵经过特征值分解,最后可以变成一个特征值和特征向量相乘后累加的情况。既然是累加,那么加数就一定有大有小,因此一定可以对每项加数排序。我们思考一下,如果有一加数相比于其他加数非常小,我们能不能将这个加数省去,这样对最后的结果影响不是很大。

3、PCA的本质

(1)对X矩阵的说明,矩阵的每一列看成是一个样本,因此又n样本,每个样本有两个属性a,b.

(2)对协方差的几点说明:

(2.1)协方差的计算公式如图中所示

(2.2)协方差的意义,这曾经是一直困挠我的问题。协方差的意义是计算元素之间的相关性(相关程度)。如图中所示,图中的协方差计算的是特征a和特征b之间即自身的相关性。我们发现主对角线是自相关性,自己和自己肯定相关性最大,副对角线是互相关性,即特征a和特征b的相关性。(具体的我们可以去仔细看看协方差的计算就明白了)

(3)PCA的目标就是使协方差矩阵的主对角线的值尽可能的大,副对角线上的值尽可能的小,最好为0.为什么呢?我们上面已经说明,协方差的意义是衡量计算元素之间的相关性,如果我让副对角线的值为0,也就说明了特征a和特征b之间相关性为0,无相关性了。这也就是我们经常听到的PCA具有去相关性的作用。

可能有人又会问为什么要去除特征之间的相关性呢?比如在特征中有两个特征a,b,我们已知a+b=1,如果我们的样本中已经知道特征a的值,那么我们一定知道特征b的值,那我们还要特征b干嘛呢?这就是所谓的特征冗余。去除特征的相关性就是去除特征b,使保留下来的特征尽量无相关性。少量特征时,我们看不出去相关性的优势。想想一下,如果我们的特征有1亿维,而且这些特征的相关性非常高,那我们的很多计算都是多余的,这样会浪费大量的时间。所以我们需要利用PCA进行去相关性。

4、原矩阵的变换

上面我们提到过PCA的目标是使X的协方差矩阵的主对角线尽可能大,副对角线尽可能的小,甚至为0.那么我们怎样做呢?如果我们不能直接对X矩阵操作,那我们能不能对X变化后的矩阵进行操作呢?

从上图我们可以看出,首先对X矩阵进行转换,然后计算Y矩阵的协方差,如何是的Y矩阵的协方差是一个对角阵呢?为什么要弄成一个对角阵呢?对角阵只有主对角线上有值,其他地方为0.这正好符合PCA的目标,是协方差的主对角线上的值尽量大,其他地方的值为0.

U是X矩阵的特征向量矩阵,是特征值组成的对角阵,所以如果我们令,那么我们就可以得到,这样我们用对X矩阵变换后X中的特征间的相关性就达到了最低。

5、PCA降维

前面说的是PCA的去相关性,那怎么用PCA进行降维呢?我们再次回到下面这张图

我们发现A矩阵经过特征值分解后,最终得到一个累加形式,如果我们对特征值进行排序,省略的掉值很小的部分,这样特征值的个数减小了,那么矩阵会减小,相应的矩阵U和也会减小(维度上),这样我们我们返代回去求得A矩阵维度也会减小,这样就降维的目的。

6、简单实例

第一步,根据协方差公式计算X矩阵的协方差;

第二步,计算协方差的特征值和特征向量,对特征值进行从大到小排序,得到  ,特征向量矩阵

U=[U1,U2],,所以,这里的Q并没有错,因为有可知U应该是

第三步,降维,由于,所以我们选择,所以我们选择Q的第一行作为我们最终的Q值,用此Q值与X矩阵相乘得到Y矩阵,Y矩阵就是我们最终想得到的既去相关性又降维的矩阵,去相关性是因为我们找到了一个Q是的Y的协方差矩阵是个对角阵,降维是Q并非原始的特征向量矩阵,而是经过降维后的特征向量矩阵,这样和X相乘后将X降维。

讲到这里,PCA的本质就算讲完了。很抱歉,这篇博客是分开写,睡了一觉后脑子不好使了。后半部分写着写着自己也有点糊涂了,如果有的地方不对望请指正,非常感谢!

【转】主成分分析(PCA)的更多相关文章

  1. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

    主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度.而白化就是为了使得每个特征能有同 ...

  2. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

  3. 降维(一)----说说主成分分析(PCA)的源头

    降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...

  4. 主成分分析PCA(转载)

    主成分分析PCA 降维的必要性 1.多重共线性--预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯. 2.高维空间本身具有稀疏性.一维正态分布有68%的值落于正负标准差之 ...

  5. 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  6. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  7. 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)

    1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...

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

    原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...

  9. K-L变换和 主成分分析PCA

    一.K-L变换 说PCA的话,必须先介绍一下K-L变换了. K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换.它是建立在统计特性基础上的一种变换,有的文献也称其为霍特林(Hot ...

  10. 05-03 主成分分析(PCA)

    目录 主成分分析(PCA) 一.维数灾难和降维 二.主成分分析学习目标 三.主成分分析详解 3.1 主成分分析两个条件 3.2 基于最近重构性推导PCA 3.2.1 主成分分析目标函数 3.2.2 主 ...

随机推荐

  1. 三:Spring Security 登录添加验证码

    Spring Security 登录添加验证码 1.准备验证码 2.自定义过滤器 3.配置 1.准备验证码 要有验证码,首先得先准备好验证码,本文采用 Java 自画的验证码,代码如下: /** * ...

  2. Jenkins (自动使用docker容器发布java.war +tomcat)

    一.大概流程 因为目前没有找Jenkins 和docker 之间比较友好的插件,所以只能使用这种比较low 的方式来实现自动部署了. 1.Jenkins在gitlab拉取项目并编译. 2.将编译后的代 ...

  3. OutOfMemoryError系列

    OutOfMemoryError系列 1.[OutOfMemoryError系列(1): Java heap space](https://blog.csdn.net/renfufei/article ...

  4. 牛客练习赛53 E-老瞎眼pk小鲜肉(思维+线段树+离线)

    前言 听说是线段树离线查询?? 做题做着做着慢慢对离线操作有点感觉了,不过也还没参透,等再做些题目再来讨论离线.在线操作. 这题赛后看代码发现有人用的树状数组,$tql$.当然能用树状数组写的线段树也 ...

  5. Codeforces Global Round 11【ABCD】

    比赛链接:https://codeforces.com/contest/1427 A. Avoiding Zero 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正 ...

  6. 【洛谷 p3366】模板-最小生成树(图论)

    题目:给出一个无向图,求出最小生成树,如果该图不连通,则输出orz. 解法:Kruskal求MST. 1 #include<cstdio> 2 #include<cstdlib> ...

  7. fzu2202 犯罪嫌疑人

    Problem Description 福尔摩斯是个大侦探,他总是在解决疑难案件.这一次的案件也不例外,案件是这样的:有编号为1到N的N位嫌疑犯,他们其中有一个犯了罪,然后每个嫌疑犯都被询问,&quo ...

  8. CodeForces - 1100E 二分+拓扑排序

    题意: 一个n个节点的有向图,节点标号从1到n,存在m条单向边.每条单向边有一个权值,代表翻转其方向所需的代价.求使图变成无环图,其中翻转的最大边权值最小的方案,以及该方案翻转的最大的边权. Inpu ...

  9. HDU 1173 思路题

    题目大意 有n个地点(坐标为实数)需要挖矿,让选择一个地点,使得在这个地方建造基地,到n个地点的距离和最短,输出基地的坐标. 题解+代码: 1 /* 2 把这个二维分开看(即把所有点投影到x轴上,再把 ...

  10. Codeforces Round #669 (Div. 2) A. Ahahahahahahahaha (构造)

    题意:有一个长度为偶数只含\(0\)和\(1\)的序列,你可以移除最多\(\frac{n}{2}\)个位置的元素,使得操作后奇数位置的元素和等于偶数位置的元素和,求新序列. 题解:统计\(0\)和\( ...