原文网址: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. 深信服edr控制中心漏洞——代码执行

    第一处代码执行 文件:tool/php_cli.php第64行

  2. Tomcat简介、安装部署、上线网站

    资源池 本章资源:点击这里 提取码:upbf tomcat官网:https://tomcat.apache.org/ jpress博客系统安装包下载地址(不是官网):https://gitee.com ...

  3. 32.vsftpd服务程序--匿名开放模式

    1.vsftpd服务程序 vsftpd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP 服务器上. 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到F ...

  4. DEDECMS:将dedecms系统的data目录迁移到web以外目录

    dedecms系统的data目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更是非常危险,所以我们建议将这个dat ...

  5. Flink-v1.12官方网站翻译-P016-Flink DataStream API Programming Guide

    Flink DataStream API编程指南 Flink中的DataStream程序是对数据流实现转换的常规程序(如过滤.更新状态.定义窗口.聚合).数据流最初是由各种来源(如消息队列.套接字流. ...

  6. 使用kubekey安装kubesphere

    下载 KubeKey KubeKey 是新一代 Kubernetes 和 KubeSphere 安装器,可帮助您以简单.快速.灵活的方式安装 Kubernetes 和 KubeSphere. expo ...

  7. Linux上搭建https服务器

    https原理: 步骤:1.客户端浏览器向服务器发送如下信息:(1)客户端支持的SSL/TLS协议的版本号(2)密钥算法套件(3)客户端产生的随机数,用于稍后生成"会话密钥"2.服 ...

  8. 通过SignalR技术整合即时通讯(IM)在.NET中应用落地

    1.引言 即时通讯(IM)是RDIFramework.NET敏捷开发框架全新提供的一个基于Web的即时通讯.内部聊天沟通的工具.界面美观大方对于框架内部进行消息的沟通非常方便.基于RDIFramewo ...

  9. Python Line Messaging Api

    Line Messaging line 是国外一个很火的实时通信软件,类似与WX,由于公司业务需求,需要基于line开发一个聊天平台,下面主要介绍关于line messaging api 的使用. 官 ...

  10. (EX)中国剩余定理

    中国剩余定理 问题引入: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何?<孙子算经> 就是计算一个数\(x\)满足\(\begin{cases} x≡2(MOD\ 3) ...