主成分分析

1、问题提出

在处理实际问题时,多变量问题是经常遇到的,一方面维度太高会增加问题的复杂性,另一方面变量之间具有一定的相关性,导致信息冗余。所以能否只用少数的几个变量来表示原始多个变量,并且信息也尽可能不丢失呢?主成分分析Principal components analysisPCA就是解决这类问题的工具。

2、算法原理

PCA是由K.Pearson在1901年首先提出的,是把原来多个变量化为少数几个综合指标的一种数据分析技术。从数学上看,简单来说就是对数据进行降维操作。下面通过一个例子对其进行解释:

首先选取一个二维问题,里面包含身高与体重两个维度,并且每个维度下都有5个样本,然后在二维平面(也就是身高与体重组成的坐标系)上描绘出来,此时可以看到五个点,如图所示。

接下来考虑对其进行降维操作,对二维平面降维得到一维,即将坐标系降维得到坐标轴,此时分别对体重和身高进行投影,如图所示。

 解决了降维问题之后,该如何评价降维方法的好坏呢?在统计学上,方差用来刻画数据的离散程度,方差越大,数据的离散程度越多。此外,方差也可以刻画数据包含的信息量,方差越大,数据包含的信息量越大。把成千上万维的一个问题降低到几维的时候,就是要保证原始数据里面所包含的信息尽可能的不丢失。从数学上看,也就是要让这组变量之间的方差尽可能的大。

由初中数学知识可知方差公式为:(式2-1)

  

通过方差公式(式2-1)可以得到,投影到体重维度的方差为:

投影到身高维度的方差为:

通过比较方差可知,降低到身高维度会更好一些,因为其方差较大,所包含的信息量更多。

除此之外还有没有其他降维方式呢?实际上也是有的。如果从方差的角度来看,可以在二维平面中找到一条斜线(如下图所示),把这些点投影到这条斜线上,可以发现这些点的离散程度更大,则方差也大。那么如何找到这条斜线呢?这就引出了本文所要讨论的PCA的方法。

 

 

PCA求解方法:协方差矩阵、相关系数矩阵、奇异值分解、交替最小二乘法。本文要讲的方法是相关系数矩阵,该方法简单,直观且容易理解

首先选取M个样本,每个样本有N个指标,也就是N个维度,如表所示。

(1)对样本数据进行标准化

不同指标的量纲通常是不完全相同的,为了使各指标之间具有可比性,须消除指标的量纲。因为量纲的不同就会使有些数据很大,有些数据很小。很小的数据方差本来比较大,但它在很大的数据面前方差就表现的非常小,这是不合理的,然后标准化可以消除量纲的影响,所以首先对样本数据进行标准化,使得其均值为0,方差为1且消除量纲。

 

标准化公式为:       (式2-2)

经标准化处理后可得到标准化矩阵:(式2-3)

(2)计算相关系数,得到相关系数矩阵

计算标准化后样本矩阵的每两个指标间的相关关系,得到相关系数矩阵R,即n个指标的协方差矩阵。计算相关系数矩阵的公式为:

                                               (式2-4)

(3)计算矩阵R的特征根及相应的特征向量

于是得到N个非负特征根,和对应于特征根的N个单位化特征向量,构成一个正交矩阵(变量之间无任何相关性,也即没有任何冗余信息),记为a,则

                                                             (式2-5)

其中矩阵a的每一列为对应于特征值的特征向量。

(4)计算主成分

N个主成分如下:

           (式2-6)

通过特征向量与标准化矩阵,可以求出N个主成分。通过式2-6可以看到,第一主成分Z1实际上就是矩阵a的第一列(即最大特征值所对应的特征向量)与标准化矩阵的第一列分别相乘再相加所得,同理可得N个主成分。此时也许有人会说原始数据是N个特征,变化之后还是N个特征,实际上维度并没有降低,所以接下来就开始降低维度,也就是从N个主成分里面选出K个。

(5)选择主成分

总方差中属于主成分Zi的比例为,称为主成分Zi的贡献率。

前K个主成分的贡献率之和称为主成分的累积贡献率。通常取较小的K,使得累积贡献率达到一个较高的百分比(如80%~90%)。此时,Z1,Z2,……,Zk,可用来代替X1,X2,……,Xn,从而达到降维的目的,而损失的信息却不多。

3、结果分析

对于以上二维问题,通过借助MATLAB软件对其进行编程求解(如果不会使用MATLAB软件,可以去B站搜索UP主“CleverFrank”,里面有非常详细的视频讲解),样本数据如图3-1所示,程序及运算结果分析如下:

图3-1  样本数据

(1)对样本数据标准化。首先将样本数据存放到data中,构成了5行2列的原始矩阵,然后开始对其进行标准化,经标准化处理后得到标准化矩阵X,其中标准化处理时可以通过调用MATLAB中的zscore函数得到标准化矩阵,也可以通过式2-2得到,标准化处理程序如图3-2所示。程序经过运行之后,可得到原始矩阵data与标准化矩阵X,如图3-3所示。

3-2  标准化处理程序

3-3  原始矩阵与标准化矩阵

(2)计算相关系数矩阵。此时可以通过调用MATLAB中的cov函数得到相关系数矩阵,也可以通过式2-4得到。程序及运行结果如图3-4所示。

3-4  相关系数矩阵 

(3)计算相关系数矩阵R的特征值,特征向量以及主成分贡献率。此时可以通过调用MATLAB中的pcacov函数得到。程序及运行结果如图3-5所示。

3-5  特征值,特征向量及贡献率

其中coeff表示特征向量,latent表示特征值,explained表示主成分贡献率。特征值1.9184所对应的特征向量为coeff的第一列且其贡献率达到95.9187,特征值0.0816所对应的特征向量为coeff的第二列且贡献率为4.0813。

(4)计算主成分及其方差,并与原始数据分别投影到身高与体重维度的方差做比较,可以发现第一主成分的方差为37.15,原始数据的第一主成分的方差为22.8,所以通过PCA可以明显提高第一主成分的方差,从而减少信息的丢失。程序及运行结果如图3-6所示。

3-5  主成分及其方差

综上所述,对于这个二维问题,通过PCA可以直接使用一个维度的信息来衡量原来两个维度所表示的信息,并且信息的丢失仅仅达到4%左右,对于更高维度的问题,使用PCA的方法进行降维,就可以将复杂问题简单化以达到预期效果。下面通过一个高维度的问题加深对PCA的理解。问题原始数据如表3-1所示。 

表3-1  问题原始数据

通过参考二维问题的处理过程,将上述问题转化为MATLAB编程语言如图3-6所示。

3-6  MATLAB源程序

将上述程序在MATLAB运行之后,结果如图3-7所示,从而可以得到第一主成分与第二主成分贡献率分别为64.0503,23.6168,计算公式如下:

3-7  特征向量,特征值及贡献率

所以,通过计算发现前两个主成分累积贡献率为87.67%。其中第一主成分主要和数学、物理、化学三科有很强的正相关性,第一主成分起名为“理科能力”,第二主成分和所有特征都正相关,可起名为“综合能力”。

以上内容是根据B站UP主 “CleverFrank” 所讲视频整理总结的!有总结不到位和错误的地方欢迎大家批评指正。

欢迎大家多多关注UP主“CleverFrank”!以及“数模很美,算法不难”公众号,可以获取详细的数学建模相关资料。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此时@此刻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值