原文网址: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. MySQL数据库操作生成UUID

    问题描述: 通过数据库操作,生成无横线的uuid,同时插入至数据库之中. 因为我要给项目做一些测试数据,项目的主键为32位无'-'的uuid,然后在数据库中,通过数据库操作,然后插入一些测试数据. 生 ...

  2. mvn 多模块

    mvn archetype:generate -DgroupId=com.xxx.cloud -DartifactId=myapp -Dversion=1.0.0-SNAPSHOT -Dpackage ...

  3. Cisco的互联网络操作系统IOS和安全设备管理器SDM__路由器软、硬件知识

    路由器软.硬件知识 1.路由器的组件: 组件 解释 Bootstrap 存储在ROM中的微代码,bootstrap用于在初始化阶段启动路由器.它将启动路由器然后装入IOS POST(开机自检) 存储在 ...

  4. Nginx 指定域名(或子域名)和网站绑定

    问题起因 博主最近在 CentOS 上面部署另外一个网站,但并不想通过端口号来访问,因为端口号对于 SEO 优化不利,且用户访问较繁琐(使用域名不就是为了方便用户访问吗?再引入端口号岂不是和使用域名的 ...

  5. .net core Api 部署到Linux

    一.环境介绍 1..net开发环境:asp.net core 3.1 2.Linux环境:CentOS Linux release 7.9.2009 (Core) 3.Swagger: Swashbu ...

  6. BZOJ1150 [CTSC2007]数据备份Backup 链表+小根堆

    BZOJ1150 [CTSC2007]数据备份Backup 题意: 给定一个长度为\(n\)的数组,要求选\(k\)个数且两两不相邻,问最小值是多少 题解: 做一个小根堆,把所有值放进去,当选择一个值 ...

  7. Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) B. Journey Planning(映射)

    题意: 已知 n 所城市(从 1 至 n 编号)及其美丽值,选取一条旅行路线,满足路线中两两城市美丽值之差等于编号之差,求所有旅行路线中美丽值的最大值. 思路: 美丽值与编号作差,差值为键,映射累加 ...

  8. hdu5365Shortest Path (floyd)

    Problem Description There is a path graph G=(V,E) with n vertices. Vertices are numbered from 1 to n ...

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

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

  10. Codeforces Round #171 (Div. 2) B. Books (模拟队列)

    题意:有一组数,问子数组和最大不超过\(t\)的最多元素个数. 题解:用数组模拟队列,不断的往里面放,队列中的元素之和大于\(t\),就不断地从队头弹出直到满足条件,维护一个最大值即可. 代码: in ...