专栏/深入理解和运用主成分分析(PCA)

深入理解和运用主成分分析(PCA)

2023年07月26日 03:11--浏览 · --点赞 · --评论
林木青同学
粉丝:49文章:9

主成分分析(PCA)可以对相关变量进行归类,从而降低数据维度,提高对数据的理解。

身边的人基本上都会主成分分析,我对它的感觉是,PCA虽然被广泛使用,但是真正理解它的人却很少。大部分人使用数据代码,咔咔一顿分析,却很少理解产出的结果。

本期的目的就是说清楚PCA的概念和使用方法。

01 主成分分析简介

主成分分析顾名思义就是寻找主成分的过程。主成分是什么呢?

主成分可以认为是特征的规范性线性组合。在一个数据集中,第一个主成分就是能够最大程度解释数据中方差的特征线性组合。第二个主成分是在与第一主成分垂直这个限制条件下,最大程度解释数据中的方差。其后的每一个主成分都遵循同样的规则。

因此,可以看出,PCA中的线性组合是一个关键假设。如果你有一堆变量之间基本上不相关的数据集,用PCA分析就会得到毫无意义的分析结果。另一个关键的假设是,你使用的数据应该服从正态分布,这样协方差矩阵即可充分描述数据集。PCA对非正态分布的数据具有相当强的鲁棒性,甚至适用于二值变量。

如何理解特征的线性组合呢?假设有一个数据集,有两个变量,数据集的分布图如下:

图片

每一个菱形代表一个观测,数据已经被标准化为均值为0、方差为1,因此数据正好组成一个椭圆形。

我们画一个水平短线,使得数据在X轴上具有最大方差,这个主成分就是两个变量的线性组合,表示为:

PC1 = a11X1+a12X2

这个主成分建立了一个基准方向,在这个方向上,数据差异最大。

图片

同样用同样的方式得出第二主成分,只是它与第一主成分不相关,方向与第一主成分是垂直的。如下所示:

图片

02 PCA分析流程

(1)变量标准化

对变量进行数据标准化是PCA的第一步。这主要是解决初始变量之间存在很大的差异的问题。

默认情况下,函数scale()对矩阵或数据框的指定列进行均值为0、标准差为1的标准化:

(2)降维

降维是PCA的核心。如何理解降维呢?比如,你有30个变量,使用PCA可将30个相关(很可能冗余)的环境变量转化为5个无关的成分变量,并且尽可能地保留原始数据集的信息。

这个时候有几个核心概念:

①特征向量

特征向量是方差最大(信息最多)的轴的方向,称之为主成分。

②特征值

特征值为某个主成分的方差,其相对比例可理解为方差解释度或贡献值。特征值从第一主成分会逐渐减少。

③载荷

载荷是特征向量乘以特征值的平方根。载荷是每个主成分上各个原始变量的权重系数。

03 R语言中用于PCA的包

目前来讲,主要有5个包用于PCA的计算:

(1)stats默认加载包,提供procomp()与princomp()函数。

(2)psych包,提供principal()函数。

(3)FactoMineR包,提供PCA()函数。

(4)ade4包duli.pca()函数。

(5)vegan包的rda()函数。

不同的包计算出的PCA结果会有一点差别。

04 如何用R语言完成主成分分析

这里我推荐大家学习《R语言实战》和《数量生态学(第二版)》的例子来加深大家对PCA的理解。

4.1 Psych包做PCA

(1)首先我用psych包来演示PCA分析。数据用的R语言中自带的iris数据集,

图片

该数据包含3个鸢尾花物种的50个样本,且每个样本中测量了4个特征,即萼片和花瓣的长度和宽度。

我们需要对数据进行标准化,使数据的均值为0,标准差为1。完成标准化后,使用psych包提供的cor.plot()函数,创建一个输入特征的相关性统计图。

可以看出萼片的长度与花瓣的长宽存在正相关关系,萼片的宽度与花瓣的长宽存在负相关关系,因此,这个数据集非常适合提取主成分。

(2)接下来,进行PCA分析

可以调用函数生成的pca对象检查各个成分,但我们的主要目的是确定要保留的成分的数量。为此,使用碎石图即可。碎石图可以帮助你评估能解释大部分数据方差的主成分,它用X轴表示主成分的数量,用Y轴表示相应的特征值。

图片

需要在碎石图中找出使得变化率降低的那个点。从这个图可以看出,3个左右的主成分是可以的。

(3)正交旋转与解释

旋转背后的意义是使变量在某个主成分上的载荷最大化,这样可以减少(或消灭)主成分之间的相关性,有助于对主成分的解释。进行正交旋转的方法称为“方差最大法”。

这里我们设定使用3个主成分,并需要进行正交旋转。

图片

如何看输出结果呢?

输出中有两个部分比较重要,第一部分就是3个主成分中每个主成分的变量载荷,分别标注为RC1至RC3。对于第一个主成分,变量Petal.width具有非常高的正载荷,对于第二个主成分,变量Sepal.Length具有非常高的正载荷。

第二个重要部分,就是以平方和SS loading开始的表格,SS loading中的值是每个主成分的特征值。如果对特征值进行标准化,就可以得到Proportion Explained行。这一行表示的是每个主成分解释的方差的比例。可以看到,对于旋转后的3个主成分能够解释的所有方差,第一个主成分可以解释其中的44%,一般来讲,你选择的主成分应该至少解释大约80%的全部方差(经验数据)。查看Cumulative Var行可以知道,这3个旋转后的主成分可以解释99%的全部方差(我们的数据实际上可能并不会这么好)。所以我们可以充满信心地认为,已经找到了合适数量的主成分。

我们用ggplot2来可视化PCA的结果:

图片

可以看出三个物种在PCA上具有显著性的区别。

4.2 FactoMineR包做PCA

个人觉得FactoMineR包做PCA更为强大。FactoMineR包来做PCA,并使用factoextra来提取并可视化结果。数据同样用的是iris的数据。

(1)PCA运算和结果

具体的结果我们可以通过summary()得到。

图片

第一个PC解释了72.96%的方差,第二个PC解释了22.85%的方差。前两个主成分累积解释了96%的方差。

可以使用factoextra包的各个函数来提取变量的分析结果。

(2)碎石图选取主成分

为了更直观地展示每个主成分解释的方差,我们可以使用函数fviz_screeplot()绘制所谓的碎石图(screeplot)。

图片

根据前面我们讲的经验原则,希望提取的主成分累积解释超过80%的方差(我看到也有人说是70%)。另外,我们希望提取的特征值大于1。

可以用get_eigenvalue()函数帮我们提取特征值。

可视化特征值:

图片

由此可见,我们只需要提取前两个主成分就行了。

(3)可视化PCA

在做可视化之前,要讨论一下PCA可视化的类型:

首先,当前两个主成分解释数据中大部分方差时,你可以通过将观测值投影到前两个主成分的范围上来可视化数据。在PCA中,此图称为分数图(得分图)。你还可以将变量向量投影到主成分的范围上,这称为载荷图

PCA得分图是一个散点图,是用于可视化不同样本之间相对位置的图。而载荷图是几个向量构成的图,显示了变量和主成分之间的关系。如下所示,我们可以观察到PetalWidth和PetalLength在x轴的投影较大,而在y轴上投影较小,说明它们对第一个主成分轴的贡献高,而PetalWidth和PetalLength的夹角较小,说明它们密切相关。

图片

双标图:得分图+载荷图。一个双标图展示了以下信息:

点是行(案例/样本),向量是列(变量)。两个点之间的距离近似于它们的相似性。向量长度近似于变量的标准差。两个向量之间的余弦近似于变量之间的相关性。

图片

①PCA得分图:观测值坐标图对应了factoextra包中的fviz_pca_ind()函数

首先,我们画得分图。这里我们使用物种信息来着色和分组。

图片
图片

②PCA载荷图:

图片

这里展示了变量对主成分的贡献值。

同样地,我们可以使用cos2这个指标,cos2反映了各个主成分中各个变量的代表性。一个变量的所有主成分cos2值加起来等于1。对于主成分而言,某个变量的cos2越接近1,则说明变量对该主成分的代表性越高;cos2越接近0,则说明变量对该主成分的代表性越差。

图片
图片

较高的 cos2 表示变量在主成分上有良好的代表性。在这种情况下,变量的位置靠近相关圆的圆周。反之,低 cos2 表示变量未由 PC 完美表示。在这种情况下,变量靠近圆心。

③双标图:

双标图可能是最常用的,fviz_pca_biplot()函数完成双标图:

这里展示优化后的双标图:

图片

4.3 Vegan包做PCA

这里展示的是《数量生态学》中的案例,但为了方便比较,用的数据还是iris的数据集。

同样可以看到,前两个主成分解释了96%的方差。

用碎石图判断选择多少个排序轴

绘制样方和变量的双序图

双序图中第一种设定参数scaling = 1(最优化展示对象之间的距离),第二个设定scaling = 2(最优化展示变量之间的协方差)。

5 总结

PCA不是统计分析,而是一种探索性分析的方法。做这一期内容我也学习到了PCA的复杂性,有很多地方没有阐述明白的,希望大家见谅,我推荐大家学习《数量生态学》第二版的内容。

点点关注,加入我们吧~


投诉或建议

玻璃钢生产厂家杭州圣诞节商场美陈朔州玻璃钢景观雕塑宁波玻璃钢仿铜雕塑定做价格江苏通道商场美陈研发公司贵阳玻璃钢雕塑加工厂家冀州玻璃钢景观雕塑玻璃钢雕塑哪家比较不错有名气玻璃钢雕塑徐州frp玻璃钢雕塑南阳卡通玻璃钢雕塑厂家酒泉玻璃钢卡通雕塑成都玻璃钢摆件雕塑批发福建商场美陈有哪些玻璃钢花盆如何制作方法封开玻璃钢人物雕塑批发玻璃钢红军浮雕雕塑杭州水果玻璃钢雕塑价位陕西个性化玻璃钢雕塑优势群力玻璃钢雕塑玻璃钢主题雕塑消未知来源乌海玻璃钢雕塑制作江西玻璃钢雕塑厂商商场美陈桌子江苏大型商场创意商业美陈溧阳玻璃钢卡通座椅雕塑连云港玻璃钢海豚雕塑白城玻璃钢花盆花器动物玻璃钢雕塑多少钱广州商场美陈创意设计亳州景区玻璃钢雕塑销售厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化