当前位置:   article > 正文

主成分分析(PCA)_pca中pc1值大好还是值小好

pca中pc1值大好还是值小好

主成分分析:(Principal Component Analysis)

基本思想

   主成分分析,顾名思义,就是通过一定的变换将原始数据变换为一组在新维度下的数据表示,并且用数据的主要特征分量代替原数据,来达到降维的目的,并且经过降维去除噪声,发现数据中的模式。
  PCA的思想是将n维特征映射到k维上(k < n),把原先的n维特征用数目更少的k维特征取代,这k维是全新的正交特征,是旧特征的线性组合。这k维特征称为主元,这些线性组合最大化样本方差,尽量使新的k维特征互不相关。
  简单点讲,对于数据量很大的数据集,或许我们很难直观的分析出该数据集的主要成分,原因就在于在坐标系下,这组数据的分布很散乱,难以观察。但是,如果我们能把这些数据在相应的空间中表示出来,也许我们就可以换个角度找出主成分:

如上图可知,在原始空间中,数据分布散乱并且毫无规律可言,但是,在PC1,PC2方向下,我们看到的又是整齐规律的数据分布。而如何找到PC1,PC2方向正是PCA要做的,就是在更高维的数据中,提取出我们想要的主成分,在这个提取过程中,也就达到了数据降维的目的,同时我们也可以通过PCA方法衡量这些主成分到底占了整个数据的多少信息。
  
补充:
PCA为什么可以通过一定的变换将原始数据变换成更低维的数据代替?原因就在于原始数据在多个维度(或影响因素)下反映的信息存在一定程度上的重叠(不同维度之间存在相关关系),那么我们就可以用比原来更少的维度(线性无关)来描绘原来的数据,当这些维度可以保留住数据中那些最重要的信息时,数据降维的目的就实现了。

PCA原理详解

预备知识

协方差:通常用Cov表示
协方差是一种用来度量两个变量关系的统计量,其定义为:

Cov(X,Y)=ni=1(Xi¯X)(Yi¯Y)n1
其中,
¯X=ni=1Xin¯Y=ni=1Yin分别为XY的均值
特别地:
X=YCov(X,X)=ni=1(Xi¯X)2n1=Var(X)
此外,还有:
¯X=0,¯Y=0,Cov(X,Y)=ni=1(Xi)(Yi)n1
这一过程叫做零均值化,通过每一个数据减去其列对应的均值,达到简化代码的目的。
  
  以上讲的Cov(X,Y)都是二维的,当面对更高维的数据时,我们通常使用协方差矩阵:
Cn×n=(ci,j,cj,i=Cov(Dimi,Dimj))
例如,当n=3时,
C3×3=(Cov(x,x)Cov(x,y)Cov(x,z)Cov(y,x)Cov(y,y)Cov(y,z)Cov(z,x)Cov(z,y)Cov(z,z))
可见,协方差矩阵为对称矩阵,其对角线为各个维度上的方差。
注:方差是衡量数据分布的一个重要的指标。数据的方差越大,则代表数据的分布越分散。PCA便是根据协方差矩阵对角线上的值的大小来选择新轴的

  
特征值与特征向量:
一般来说,如果一个n阶矩阵A满足:
Av=λv这时,v称为矩阵A的特征向量,λ称为矩阵A的特征值。
  通常,在物理意义上,一个高维空间的线性变换可以想象是在对一个向量在各个方向上进行了不同程度的变换,而特征向量之间是线性无关的,它们对应了最主要的变换方向,同时特征值表达了相应的变换程度。值得注意的是:一个矩阵的一组特征向量{v1,v2,,vn}就是一组正交向量
  

PCA的算法步骤
  • 第一步:对于原始数据,进行去均值化,即所有的样例数据减去其对应的均值;
  • 第二步:计算协方差矩阵;
  • 第三步:计算协方差矩阵的特征向量与特征值;
  • 第四步:将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵;
  • 第五步:将样本点投影到选取的特征向量上。假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(m×n),协方差矩阵是n×n,选取的k个特征向量组成的矩阵为EigenVectors(n×k)。那么投影后的数据FinalData为:
    FinalData(m×k)=DataAdjust(m×n)×EigenVectors(n×k)

  
  整个PCA算法流程貌似非常简单,就是求协方差的特征值和特征向量,然后做数据转换。但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的k维向量?其背后隐藏的意义是什么?整个PCA的意义是什么?

  

推导思路

  回过头来看PCA的目的,原始数据是分布在以n个不同的变量为坐标轴组成的N维空间上,数据在一些轴上(假设其数目为n)的分布存在一定程度的相关关系,PCA的目的就是找到彼此线性无关的新的一些轴(k < n)来代替这n条轴,同时要求在由这些轴组成的空间上,数据最重要的那些信息可以被保留下来

  通过PCA的算法步骤,我们可以知道,我们就用协方差的特征向量的方向来代表这k条轴的方向。那么,为什么协方差矩阵的特征向量就是k维理想特征呢?

以下用最大方差理论和最小误差理论解释上述问题:
  

1、最大方差理论

在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。所以,我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。
  
假设,下图有5个样本点:(已经做过预处理,均值为0,特征方差归一)

图2

将样本投影到某一维上,这里用一条过原点的直线表示:

图3

那么,根据我们的方差最大化理论,应当选择使得样本分布方差最大的情况,即如上图可知,问题转化为:找出最优的u,使得投影后的样本方差最大。(定义投影向量u,可令其为单位向量,有:uTu=1)
投影后方差为:

Var(X)=1nni=1|xiu|=1nni=1(xTiu)2

也即是:

Var(X)=1nni=1uTx(i)Tx(i)u=uT(1nni=1x(i)Tx(i))u
令:
X=[x(1)x(2)x(n)]
那么,有:
XXT=ni=1x(i)Tx(i)
Var(X)=1nuTXXTu
  
对于XXT,假设其某一特征向量为ξ,对应的特征值为λ,则,存在:
XXTξ=λξ(XXTξ)Tξ=(λξ)Tξ=λξTξ0
即,λ0
故,可知XXT为半正定矩阵,而uTXXTu为半正定矩阵的二次型,所以,目标函数max{Var(x)}=max{1nuTXXTu}必定存在最优解。
  
对于1nuTXXTu=uT(1nXXT)u,易知,其中1nXXT即为协方差矩阵C,不妨记为:Σ.
Λ=1nuTXXTu,则有:
Λ=uTΣu可推出:(由于uTu=1)
uΛ=uuTΣu=Σu即:
Σu=Λu
所以:由上式可知,u即为协方差矩阵Σ的特征向量,Λ=1nuTXXTu即为协方差矩阵Σ的特征值。最佳的投影直线是特征值λ最大时对应的特征向量u1,其次是λ第二大对应的特征向量u2,依次类推。
  
因此,我们只需要求解协方差矩阵的特征向量与特征值,得到的前k大特征值对应的特征向量就是最佳的k维新特征,而且这k维新特征是正交的。
在得到前k个特征向量u之后,数据x(i)可以通过变换得到投影后的数据:
FinalData(i)=[uT1x(i)uT2x(i)uTkx(i)]其中的第j维就是x(i)uj下的投影。
至此,我们就得到了我们想要的经过降维处理的数据FinalData
  
注:
可以通过线性代数知识求解Λ的最大值:假设协方差矩阵的特征值为:λ1λ2λn0;根据
Λ=1nuT1XXTu1=1n<XTu1,XTu1>=1nXTu122=1n(XTu12u12)2
Λ=XTu12u12λ1=σ1即:
Λλ1

  

2、最小误差理论

回顾我们前面探讨的是求一条直线,使得样本点投影到直线上的点的方差最大。再回想我们学过的线性回归,目的也是求一个线性函数使得直线能够最佳拟合样本点,那么我们能不能认为最佳的直线就是回归后的直线呢?
因此,我们打算选用一种评价直线好坏的方法,来代替评价找到的最佳直线是否为最佳拟合直线。
这种评价直线好坏的方法就是,用点到直线的距离d2来度量。
xi在直线上的投影为xi;那么我们就是要最小化

d2=ni=1xixi2
这个公式称作最小平方误差(Least Squared Error)。
  
  
而确定一条直线,一般只需要确定一个点,并且确定方向即可。
第一步确定点:
假设要在空间中找一点x0来代表这n个样本点,就需要使得
J0(x0)=nk=1x0xk2最小
假设ˉX为这n个样本点的均值,那么
J0(x0)=nk=1(x0ˉX)(xkˉX)2=nk=1x0ˉX2+nk=1xkˉX2后项与x0无关,看做常量,而J0(x0)0因此最小化J0(x0)时,x0=ˉX
即:ˉX可以代表这n个样本点。
  
第二步确定方向:
假设直线的方向是单位向量e。那么直线上任意一点,比如xk就可以用点ˉXe来表示:(其中dk是点xkˉX的距离)
xk=ˉX+dke
则此时平方误差为:
J0(xk)=nk=1(ˉX+dke)xk2=nk=1dke(xkˉX)2=nk=1d2ke22nk=1dkeT(xkˉX)+nk=1xkˉX2
首先,对dk进行求偏导数,得到:
dk=eT(xkˉX)
代入J0(xk)中可得:
J0(xk)=nk=1d2k2nk=1d2k+nk=1xkˉX2=nk=1d2k+nk=1xkˉX2=nk=1[eT(xkˉX)]2+nk=1xkˉX2=nk=1eT(xkˉX)(xkˉX)Te+nk=1xkˉX2=nk=1eTSe+nk=1xkˉX2其中,S=(xkˉX)(xkˉX)T;S被称作散列矩阵(scatter matrix)
则,此时要使J0(xk)最小,即是要eTSe最大,引入拉格朗日乘子λ:
令:(由于e2=1)
u=eTSeλ(eTe1)
求偏导:
ue=2Se2λe
令导数为零,得:
Se=λe
即:
1n1Se=1n1λe
1n1S=1n1(xkˉX)(xkˉX)T
即:1n1S即为协方差矩阵CCe=λe
  
故,同样可知对协方差矩阵求特征向量,就是求解样本点的投影直线的最佳拟合方向,前k个特征向量的方向就是前k个最佳拟合直线方向,也即为前k个主成分方向。
  
得到k个主成分方向之后,就可以得到投影之后的数据FinalData了。
  
  
至此,PCA算法的推导过程也就结束了,我们可以看到,整个推导过程重点就在于怎样论证k个特征向量方向就是我们想要的k个主成分方向,这里用了两个理论:最大方差理论最小平方误差理论

  

参考资料:

http://blog.csdn.net/zhongkelee/article/details/44064401
http://blog.csdn.net/hit1524468/article/details/60323173
https://www.zhihu.com/question/30094611/answer/120499954
http://blog.csdn.net/dongtinghong/article/details/14216139
http://blog.sciencenet.cn/blog-1583812-814868.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/94037
推荐阅读
相关标签
  

闽ICP备14008679号