首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PCA主成分分析(二)

主题模型

—PCA主成分分析(二)

作者:水...琥珀

编辑:楠楠

一、数据的特点

二、什么是主成分分析

三、主成分分析的原理

四、主成分分析的python实现

在之前的推送中我们已经介绍了PCA主成分分析的前两部分内容,今天我们将介绍第三部分内容:主成分分析的原理。

经过主成分在压缩数据之后的数据(主成分得分数据),多个变量变为更少的综合变量,变量个数减少了,还能反映原有数据的信息吗?答案是可以的。为什么可以呢?解决以上疑问前我们需要了解PCA理论基础:

三、主成分分析的原理

1.PCA理论基础:方差最大理论

我们以一个二维数据为例:

图1:寻找主成分的正交旋转

将二维,降至一维

• a二维经过投影,变为一维;

• b要尽可能保留原始信息。直观的感受就是投影之后尽量分散,点分布差异相对较大,没有相关性。(相反的极端情况是投影后聚成一团,变量间的差别小,蕴含的信息就少了)所以样本间有变化,才有更多信息,变化就是差异;

• c如何体现差异呢?可量化的方差。这就需要找一个方向使得投影后它们在投影方向上的方差尽可能达到最大,即在此方向上所含的有关原始信息样品间的差异信息是最多的;

• d降维在线性空间中就是基变换,换一种说法就是,找到一组新的基向量,在此向量空间上进行投影。在图中原本的基向量是(0,1),(1,0),现在基向量换成在横贯1,3象限的那条,为什么不选横贯2,4象限的呢,思考②条。

我们由二维空间向一维空间的转换,如何才能尽可能的保留信息呢,这就需要找一个方向使得投影后它们在投影方向上的方差尽可能达到最大,即在此方向上所含的有关原始信息样品间的差异信息是最多的。

小伙伴会不会有为什么是方差最大的疑惑呢?从数据体现信息的多少出发。极端的情况是样本数据都是相同的,那就没有更多信息了。所以样本间有变化,才有更多信息,变化就是差异,差异就用方差体现。

2.方差最大和协方差的关系

要解释方差最大和主成分的关系需要从方差和协方差的关系入手:

设对原始数据标准化,减去对应变量的均值,再除以其方差,每个样本对应P个变量,设x=(x1,x2,⋯xp)′为P维随机变量,u=E(x),∑=V(x)找其线性组合,即综合变量,进行线性变换:

首先,我们试图用综合变量y1来代表原始的P个变量,为使y1在 x1,x2,⋯,xn的一切线性组合中最大限度的保留这组变量的信息,应使其方差最大化。在的约束下,寻找a1,使得,达到最大,就称为第一主成分。协方差矩阵 :

为对称的,进行对称矩阵的谱分解,分解后的对角矩阵元素λi,ti都有着特殊的含义,即特征值和对应的特征向量。

谱分解:

3. 解释方差最大和主成分的关系:

设:

由于:

计算要知道,T为正交矩阵。t为特征向量,T’T为1;a’t是一个数,不是向量;a’a已经设定为1,本人第一次看好多遍无果,想到前面一句后才顺利的推导上面的式子。

直接验证,当取a1=t1时,有,即此时y1=t1′x,具有最大方差值λ1。

如果第一主成分信息不够多,还不足以代表原始的p个变量,则需要再考虑第二主成y2,为了使与y2所含的信息与y1不重叠,要求第一主成分与第二主成分不相关 ,cov(y1,y2)=0。这里的重叠是指线性关系上的,如果有重叠则说明还有进一步降维的空间。

第二主成分的推理于第一主成分类似,可得到y2=t2′x,具有方差值λ2。

推理点拨:考虑到不同特征值的特征向量正交,相乘为0,推理亦是会畅通。

4、 贡献率和累计贡献率概念

从上面的推导,我们也可以发现特征值和主成分方差的关系,总方差中属于第i主成分yi的比例为:  

称为主成分yi的贡献率。累计贡献率就是多个主成分贡献率的加和啦。

那为了主成分的为了是这些主成分所含的信息不互相重叠,应要求他们之间互不相关。

5、主成分取多少个呢?

可人为指定固定个数,但是往往取相对于变量个数p较小的m个,使得累计贡献达到一个较高的百分比(80%——90%),此时y1,y2,y2……ym可以来代替x1,x2,x3……xp,从而达到降为的目的,而信息的损失却不多。

6、几何意义

通过第三部分的计算过程,假设我们得到所有的主成分:y1,y2,y3,⋯yp,ai为特征向量。在“方差最大和协方差的关系”小节内容中的的线性变换,是一个正交变换。

主成分几何意义是将原由(x1,x2,x3……xp)′构成的原p维RPRP空间的坐标轴作一正交旋转,一组正交单位向量(t1,t2,⋯,tp)表明了p个新坐标轴的方向,这些新的坐标轴彼此仍保持正交,yi是在ti上的投影值,λi反映了在t1上投影点的分散程度。

本次有关PCA主分分析的原理就介绍完了,下次我们会介绍PCA的最后一部分:如何利用Python实现主成分分析,请大家多多期待哦~

欢迎热爱数据挖掘的你加入我们的编辑团队,有兴趣后台私聊小编哦,坐等调戏~~~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180510G1TASR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券