PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。本文主要分为两大部分:

第一部分:PCA原理的主要内容。

第二部分:给出PCA程序实现步骤。

第三部分:程序函数详解。见下一篇博客:

程序源码下载地址:http://download.csdn.net/detail/ckzhb/9903051

一、原理

参考:

http://blog.csdn.net/xiaojidan2011/article/details/11595869

http://blog.sina.com.cn/s/blog_82e9a8f80102x25y.html

1.1 预备知识

1、基变换的矩阵表示

一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。

R可以小于N,而R决定了变换后数据的维数。也就是说,我们可以将一N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量。因此这种矩阵相乘的表示也可以表示降维变换。

矩阵相乘找到了一种物理解释:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说,一个矩阵可以表示一种线性变换。

2、协方差矩阵

从直观上来看,协方差表示的是两个变量总体误差的期望。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

协方差矩阵:

协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。

1.2 问题转换和优化

问题:如何选择基才是最优的。或者说,如果我们有一组N维向量,现在要将其降到K维(K小于N),那么我们应该如何选择K个基才能最大程度保留原有的信息?

答:直观地,投影后,数据之间的方差越大越好。且对于K个基,如果我们还是单纯只选择方差最大的方向,很明显,这个方向与第一个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因此,应该有其他约束条件。从直观上说,让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。降维问题的优化目标:将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)

最终要达到的目的与属性内方差及属性间协方差有密切关系。因此我们希望能将两者统一表示,仔细观察发现,两者均可以表示为内积的形式,而内积又与矩阵相乘密切相关。

在属性/特征/维度均值为0的情况下,两个属性/特征/维度的协方差简洁的表示为其内积除以元素数m。

假设我们只有a和b两个字段,那么我们将它们按行组成矩阵X,然后我们用X乘以X的转置,并乘上系数1/m。

这个矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差。两者被统一到了一个矩阵的。

根据一些列数学推导,我们发现要达到优化目的,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。设原始数据矩阵X对应的协方差矩阵为Cov,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据。优化目标变成了寻找一个矩阵P,满足是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件

二、PCA实现步骤:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X。

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值。

即数据预处理,更准确的做法为:

3)求出协方差矩阵Cov。

4)求出协方差矩阵的特征值及对应的特征向量或者利用奇异值分解的方法。

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P。

6)Y=PX即为降维到k维后的数据

三、程序

本文给出程序代码中的一些预备知识即盒形图,具体程序详解见一篇文章。

参考:

http://wiki.mbalib.com/wiki/%E7%AE%B1%E7%BA%BF%E5%9B%BE

http://www.blogjava.net/norvid/articles/317235.html

图形说明:

它由数据中的五个统计量组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如上图。下四分位数、中位数、上四分位数组成一个“带有隔间的盒子”。上四分位数到最大值之间建立一条延伸线,这个延伸线成为“胡须(whisker)”。

由于现实数据中总是存在各式各样地“脏数据”,也成为“离群点”,于是为了不因这些少数的离群数据导致整体特征的偏移,将这些离群点单独汇出,而盒图中的胡须的两级修改成最小观测值与最大观测值。这里有个经验,就是最大(最小)观测值设置为与四分位数值间距离为1.5个IQR(中间四分位数极差)。如果存在离群点小于最小观测值,则胡须下限为最小观测值,离群点单独以点汇出。如果没有比最小观测值小的数,则胡须下限为最小值;如果存在离群点大于最大观测值,则胡须上限为最大观测值,离群点单独以点汇出。如果没有比最大观测值大的数,则胡须上限为最大值。(当两种情况同时发生时,两侧的胡须长度相等)

  • IQR = Q3-Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度,四分位距。
  • 在Q3+1.5IQR(四分位距)和Q1-1.5IQR处画两条与中位线一样的线段,这两条线段为异常值截断点,称其为内限;在Q3+3IQR和Q1-3IQR处画两条线段,称其为外限。处于内限以外位置的点表示的数据都是异常值,其中在内限与外限之间的异常值为温和的异常值(mild outliers),在外限以外的为极端的异常值(li)的异常值extreme outliers。

作用:

1、直观明了地识别数据批中的异常值。箱线图为我们提供了识别异常值的一个标准:异常值被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的值,来源于经验判断,经验表明它在处理需要特别注意的数据方面表现不错。众所周知,基于正态分布的3σ法则或z分数方法是以假定数据服从正态分布为前提的,但实际数据往往并不严格服从正态分布。它们判断异常值的标准是以计算数据批的均值和标准差为基础的,而均值和标准差的耐抗性极小,异常值本身会对它们产生较大影响,这样产生的异常值个数不会多于总数0.7%。显然,应用这种方法于非正态分布数据中判断异常值,其有效性是有限的。箱线图的绘制依靠实际数据,不需要事先假定数据服从特定的分布形式,没有对数据作任何限制性要求,它只是真实直观地表现数据形状的本来面貌;另一方面,箱线图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的耐抗性,多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能对这个标准施加影响,箱线图识别异常值的结果比较客观。由此可见,箱线图在识别异常值方面有一定的优越性。

2、利用箱线图判断数据批的偏态和尾重。

具体见参考来源。

3、利用箱线图比较几批数据的形状

同一数轴上,几批数据的箱线图并行排列,几批数据的中位数、尾长、异常值、分布区间等形状信息便昭然若揭。在一批数据中,哪几个数据点出类拔萃,哪些数据点表现不及一般,这些数据点放在同类其它群体中处于什么位置,可以通过比较各箱线图的异常值看出。各批数据的四分位距大小,正常值的分布是集中还是分散,观察各方盒和线段的长短便可明了。每批数据分布的偏态如何,分析中位线和异常值的位置也可估计出来。还有一些箱线图的变种,使数据批间的比较更加直观明白。例如有一种可变宽度的箱线图,使箱的宽度正比于批量的平方根,从而使批量大的数据批有面积大的箱,面积大的箱有适当的视觉效果。如果对同类群体的几批数据的箱线图进行比较,分析评价,便是常模参照解释方法的可视图示;如果把受测者数据批的箱线图与外在效标数据批的箱线图比较分析,便是效标参照解释的可视图示。箱线图结合这些分析方法用于质量管理、人事测评、探索性数据分析等统计分析活动中去,有助于分析过程的简便快捷,其作用显而易见。

局限:

1)不能提供关于数据分布偏态和尾重程度的精确度量

2)对于批量比较大的数据批,反应的形状信息更加模糊

3)用中位数代表总体评价水平有一定的局限性

主成份分析(PCA)——原理、实现步骤相关推荐

  1. 主成份分析(PCA)

    主成分分析的目的:特征降维 1.为什么要进行特征降维? 直观上通常认为样本向量的维数越高,就了解样本更多方面的属性,应该对提高识别率有利,然而事实并非如此. 对于已知的样本数目,存在着一个特征数目的最 ...

  2. 主成份分析(PCA)详解

    主成分分析法(Principal Component Analysis)大多在数据维度比较高的时候,用来减少数据维度,因而加快模型训练速度.另外也有些用途,比如图片压缩(主要是用SVD,也可以用PCA ...

  3. 主成份分析与因子分析的区别

    参见 http://newgenerationresearcher.b ... 0/blog-post_29.html 主成份分析 (principal component analysis,简称PC ...

  4. EigenGame:将主成份分析(PCA)作为一个博弈游戏

    EigenGame由两部分组成,"Eigen"意为特征,也是主成份分析(PCA)方法的核心.而"Game"则意为博弈论,是一种研究理性决策者之间的冲突与合作的数 ...

  5. 影像组学视频学习笔记(23)-主成分析PCA、降维和特征筛选的区别、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(23)主要讲解: 主成分析PCA,影像组学降维和特征筛选的区别 0. PCA(Principal component analysis) ...

  6. hotelling t2 matlab,pca主成份分析方法

    1.应用pca的前提 应用pca的前提是,连续信号具有相关性.相关性是什么,是冗余.就是要利用pca去除冗余. 2.pca的定义 pca是一种去除随机变量间相关性的线性变换.是一种常用的多元数据分析方 ...

  7. 机器学习实战-65:主成因分析降维算法(Principal Component Analysis)

    机器学习实战-65:主成因分析降维算法(PCA) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是 ...

  8. PCA原理分析和Matlab实现方法(三)

    PCA主成分分析原理分析和Matlab实现方法(三) [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/68487833   ...

  9. PCA原理分析和意义(一)

    原文链接:http://blog.codinglabs.org/articles/pca-tutorial.html PCA(Principal Component Analysis)是一种常用的数据 ...

最新文章

  1. 【牛腩新闻发布系统】开发前的准备01
  2. DES/AES、SM4、RSA、SM2、SM3
  3. 详解在Visual Studio中使用git版本系统
  4. Python3 字符串复制
  5. win7计算机风格恢复,Win10怎么恢复Win7开始菜单风格?
  6. (10) nginx 统计模块安装使用和优化
  7. labelme标注文件转coco json,coco json转yolo txt格式,coco json转xml, labelme标注文件转分割,boxes转labelme json
  8. word如何调整字间距离_大篇幅文字如何排版才能赏心悦目?
  9. 魅族发布会邀请函来了!“无字天书”的秘密明晚揭晓
  10. 设置DBGridEH自适应列宽的最好方法
  11. 多图片的合并(2种方式,可以设置间距)
  12. spring3: 依赖和依赖注入-xml配置-DI的配置
  13. 如此逼真的高清图像居然是端到端网络生成的?GANs 自叹不如 | ICCV 2017
  14. 【运筹学】线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | 线性规划表示为 基矩阵 基向量 非基矩阵 非基向量 形式 )
  15. java工程师容易秃头吗_程序员因发际线后悔学java!
  16. 老照片:一个澳洲人在大清国的徒步旅行
  17. AV1时域滤波相关代码
  18. 目标级联分析法( Analytical Target Cascading , ATC )理论matlab程序
  19. 【Python 打开Raw data】
  20. 散点图的相关性与显著性---MATLAB

热门文章

  1. 二次型在一点的_EP型隐形车衣除胶剂的使用方法,为什么不建议用柏油清洗剂...
  2. android程序root权限,android应用程序中应用root权限
  3. github上成员贡献量_Bifrost 长期贡献规则,获得 BNC 的 5 种方式
  4. java8与hibernate_Hibernate 使用java8 LocalDateTime 注意事项
  5. HALCON 20.11:深度学习笔记(12)---语义分割
  6. 集成产品开发(IPD)初探
  7. ehd边缘直方图描述子 matlab,一种新的图像空间特征提取方法
  8. 返回一个数组的连续子数组和的最大值
  9. Jquery第二篇【选择器、DOM相关API、事件API】
  10. 逻辑漏洞-支付风险-大疆某处支付逻辑漏洞可1元买无人机