主成分分析

维基百科,自由的百科全书
跳到导航 跳到搜索
一个高斯分布平均值为(1, 3),标准差在(0.878, 0.478)方向上为3、在其正交方向上为1的主成分分析。黑色的两个向量是此分布的协方差矩阵特征向量,其长度为对应的特征值之平方根,并以分布的平均值为原点。

在多元统计分析中,主成分分析(英语:Principal components analysisPCA)是一种统计分析、简化数据集的方法。它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(Principal Components)。具体地,主成分可以看做一个线性方程,其包含一系列线性系数来指示投影方向。PCA对原始数据的正则化或预处理敏感(相对缩放)。

基本思想:

  • 将坐标轴中心移到数据的中心,然后旋转坐标轴,使得数据在C1轴上的方差最大,即全部n个数据个体在该方向上的投影最为分散。意味着更多的信息被保留下来。C1成为第一主成分
  • C2第二主成分:找一个C2,使得C2与C1的协方差(相关系数)为0,以免与C1信息重叠,并且使数据在该方向的方差尽量最大。
  • 以此类推,找到第三主成分,第四主成分。。。。第p个主成分。p个随机变量可以有p个主成分[1]

主成分分析经常用于减少数据集的维数,同时保留数据集当中对方差贡献最大的特征。这是通过保留低维主成分,忽略高维主成分做到的。这样低维成分往往能够保留住数据的最重要部分。但是,这也不是一定的,要视具体应用而定。由于主成分分析依赖所给数据,所以数据的准确性对分析结果影响很大。

主成分分析由卡尔·皮尔逊于1901年发明[2],用于分析数据及建立数理模型,在原理上与主轴定理英语相似。之后在1930年左右由哈罗德·霍特林独立发展并命名。依据应用领域的不同,在信号处理中它也叫做离散K-L 转换(discrete Karhunen–Loève transform (KLT))。其方法主要是通过对协方差矩阵进行特征分解[3],以得出数据的主成分(即特征向量)与它们的权值(即特征值[4])。PCA是最简单的以特征量分析多元统计分布的方法。其结果可以理解为对原数据中的方差做出解释:哪一个方向上的数据值对方差的影响最大?换而言之,PCA提供了一种降低数据维度的有效办法;如果分析者在原数据中除掉最小的特征值所对应的成分,那么所得的低维度数据必定是最优化的(也即,这样降低维度必定是失去讯息最少的方法)。主成分分析在分析复杂数据时尤为有用,比如人脸识别

PCA是最简单的以特征量分析多元统计分布的方法。通常,这种运算可以被看作是揭露数据的内部结构,从而更好地展现数据的变异度。如果一个多元数据集是用高维数据空间之坐标系来表示的,那么PCA能提供一幅较低维度的图像,相当于数据集在讯息量最多之角度上的一个投影。这样就可以利用少量的主成分让数据的维度降低了。

PCA 跟因子分析英语密切相关。因子分析通常包含更多特定领域底层结构的假设,并且求解稍微不同矩阵的特征向量。

PCA 也跟典型相关分析(CCA)有关。CCA定义的坐标系可以最佳地描述两个数据集之间的互协方差,而PCA定义了新的正交坐标系,能最佳地描述单个数据集当中的方差。


数学定义

PCA的数学定义是:一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推[5]

定义一个n × m矩阵, XT为去平均值(以平均值为中心移动至原点)的数据,其行为数据样本,列为数据类别(注意,这里定义的是XT 而不是X)。则X奇异值分解X = WΣVT,其中m × m矩阵WXXT特征向量矩阵, Σm × n的非负矩形对角矩阵,V是n × nXTX特征向量矩阵。据此,

m < n − 1时,V 在通常情况下不是唯一定义的,而Y 则是唯一定义的。W 是一个正交矩阵YTWT=XT,且YT的第一列由第一主成分组成,第二列由第二主成分组成,依此类推。

为了得到一种降低数据维度的有效办法,我们可以利用WLX 映射到一个只应用前面L个向量的低维空间中去:

其中,且单位矩阵

X 的单向量矩阵W相当于协方差矩阵特征向量 C = X XT,

欧几里得空间给定一组点数,第一主成分对应于通过多维空间平均点的一条线,同时保证各个点到这条直线距离的平方和最小。去除掉第一主成分后,用同样的方法得到第二主成分。依此类推。在Σ中的奇异值均为矩阵 XXT特征值的平方根。每一个特征值都与跟它们相关的方差是成正比的,而且所有特征值的总和等于所有点到它们的多维空间平均点距离的平方和。PCA提供了一种降低维度的有效办法,本质上,它利用正交变换将围绕平均点的点集中尽可能多的变量投影到第一维中去,因此,降低维度必定是失去讯息最少的方法。PCA具有保持子空间拥有最大方差的最优正交变换的特性。然而,当与离散余弦变换相比时,它需要更大的计算需求代价。非线性降维技术相对于PCA来说则需要更高的计算要求。

PCA对变量的缩放很敏感。如果我们只有两个变量,而且它们具有相同的样本方差,并且成正相关,那么PCA将涉及两个变量的主成分的旋转。但是,如果把第一个变量的所有值都乘以100,那么第一主成分就几乎和这个变量一样,另一个变量只提供了很小的贡献,第二主成分也将和第二个原始变量几乎一致。这就意味着当不同的变量代表不同的单位(如温度和质量)时,PCA是一种比较武断的分析方法。但是在Pearson的题为 "On Lines and Planes of Closest Fit to Systems of Points in Space"的原始文件里,是假设在欧几里得空间里不考虑这些。一种使PCA不那么武断的方法是使用变量缩放以得到单位方差。

讨论

通常,为了确保第一主成分描述的是最大方差的方向,我们会使用平均减法进行主成分分析。如果不执行平均减法,第一主成分有可能或多或少的对应于数据的平均值。另外,为了找到近似数据的最小均方误差,我们必须选取一个零均值[6]

假设零经验均值,数据集 X 的主成分w1可以被定义为:

为了得到第 k个主成分,必须先从X中减去前面的 个主成分:

然后把求得的第k个主成分带入数据集,得到新的数据集,继续寻找主成分。


PCA相当于在气象学中使用的经验正交函数(EOF),同时也类似于一个线性隐层神经网络。 隐含层 K 个神经元的权重向量收敛后,将形成一个由前 K 个主成分跨越空间的基础。但是与PCA不同的是,这种技术并不一定会产生正交向量。

PCA是一种很流行且主要的的模式识别技术。然而,它并不能最优化类别可分离性[7] 。另一种不考虑这一点的方法是线性判别分析。

符号和缩写表

Symbol符号 Meaning意义 Dimensions尺寸 Indices指数
由所有数据向量集组成的数据矩阵,一列代表一个向量
数据集中列向量的个数 标量
每个列向量的元素个数 标量
子空间的维数, 标量
经验均值向量
经验标准方差向量
所有的单位向量
对均值的偏离向量
Z-分数,利用均值和标准差计算得到
协方差矩阵
相关矩阵
C的所有特征向量集
主对角线为特征值的对角矩阵
基向量矩阵
XW矩阵的投影矩阵

主成分分析的属性和限制

如上所述,主成分分析的结果依赖于变量的缩放。

主成分分析的适用性受到由它的派生物产生的某些假设[8] 的限制。

主成分分析和信息理论

通过使用降维来保存大部分数据信息的主成分分析的观点是不正确的。确实如此,当没有任何假设信息的信号模型时,主成分分析在降维的同时并不能保证信息的不丢失,其中信息是由香农熵[9]来衡量的。 基于假设得 也就是说,向量 x 是含有信息的目标信号 s 和噪声信号 n 之和,从信息论角度考虑主成分分析在降维上是最优的。

特别地,Linsker证明了如果 s 是高斯分布,且 n 是 与密度矩阵相应的协方差矩阵的高斯噪声,

使用统计方法计算PCA

以下是使用统计方法计算PCA的详细说明。但是请注意,如果利用奇异值分解(使用标准的软件)效果会更好。

我们的目标是把一个给定的具有 M 维的数据集X 变换成具有较小维度 L的数据集Y。现在要求的就是矩阵YY是矩阵X Karhunen–Loève变换。:

组织数据集

假设有一组 M 个变量的观察数据,我们的目的是减少数据,使得能够用L 个向量来描述每个观察值,L < M。进一步假设,该数据被整理成一组具有N个向量的数据集,其中每个向量都代表M 个变量的单一观察数据。

  • 为列向量,其中每个列向量有M 行。
  • 将列向量放入M × N的单矩阵X 里。

计算经验均值

  • 对每一维m = 1, ..., M计算经验均值
  • 将计算得到的均值放入一个 M × 1维的经验均值向量u

计算平均偏差

对于在最大限度地减少近似数据的均方误差的基础上找到一个主成分来说,均值减去法是该解决方案的不可或缺的组成部分[10] 。因此,我们继续如下步骤:

  • 从数据矩阵X的每一列中减去经验均值向量 u
  • 将平均减去过的数据存储在M × N矩阵B
where h is a 1 × N row vector of all 1s:

其中h是一个全 1s:的1 × N 的行向量

求协方差矩阵

  • 从矩阵B 中找到M × M 的经验协方差矩阵C

其中 为期望值

是最外层运算符

是共轭转置运算符。

请注意,如果B完全由实数组成,那么共轭转置与正常的转置一样。

查找协方差矩阵的特征值和特征向量

  • 计算矩阵C 的特征向量
其中,DC的特征值对角矩阵,这一步通常会涉及到使用基于计算机的计算特征值和特征向量的算法。在很多矩阵代数系统中这些算法都是现成可用的,如R语言MATLAB,[12][13] Mathematica,[14] SciPy, IDL(交互式数据语言), 或者GNU Octave以及OpenCV
  • 矩阵DM × M的对角矩阵
  • 各个特征值和特征向量都是配对的,m个特征值对应m个特征向量。

相关源代码

  • Cornell Spectrum Imager - An open-source toolset built on ImageJ. Enables quick easy PCA analysis for 3D datacubes.
  • imDEV Free Excel addin to calculate principal components using R package pcaMethods.
  • "ViSta: The Visual Statistics System" a free software that provides principal components analysis, simple and multiple correspondence analysis.
  • "Spectramap" is software to create a biplot using principal components analysis, correspondence analysis or spectral map analysis.
  • XLSTAT is a statistical and multivariate analysis software including Principal Component Analysis among other multivariate tools.
  • FinMath, a .NET numerical library containing an implementation of PCA.
  • The Unscrambler is a multivariate analysis software enabling Principal Component Analysis (PCA) with PCA Projection.
  • Computer Vision Library
  • In the MATLAB Statistics Toolbox, the functions princomp and wmspca give the principal components, while the function pcares gives the residuals and reconstructed matrix for a low-rank PCA approximation. Here is a link to a MATLAB implementation of PCA PcaPress .
  • In the NAG Library英语, principal components analysis is implemented via the g03aa routine (available in both the Fortran[15] and the C[16] versions of the Library).
  • NMath英语, a proprietary numerical library containing PCA for the .NET Framework.
  • in Octave, a free software computational environment mostly compatible with MATLAB, the function princomp gives the principal component.
  • in the free statistical package R, the functions princomp and prcomp can be used for principal component analysis; prcomp uses singular value decomposition which generally gives better numerical accuracy. Recently there has been an explosion in implementations of principal component analysis in various R packages, generally in packages for specific purposes. For a more complete list, see here: [1].
  • In XLMiner, the Principal Components tab can be used for principal component analysis.
  • In IDL, the principal components can be calculated using the function pcomp.
  • Weka computes principal components (javadoc).
  • Software for analyzing multivariate data with instant response using PCA
  • Orange (software)英语 supports PCA through its Linear Projection widget.
  • A version of PCA adapted for population genetics analysis can be found in the suite EIGENSOFT.
  • PCA can also be performed by the statistical software Partek Genomics Suite, developed by Partek.

参见

注释

  1. 主成分分析(principal components analysis, PCA)——无监督学习. 
  2. Pearson, K. On Lines and Planes of Closest Fit to Systems of Points in Space (PDF). Philosophical Magazine. 1901, 2 (6): 559–572. (原始内容 (PDF)存档于2013-10-20). 
  3. Abdi. H., & Williams, L.J. Principal component analysis.. Wiley Interdisciplinary Reviews: Computational Statistics,. 2010, 2: 433–459. 
  4. Shaw P.J.A. (2003) Multivariate statistics for the Environmental Sciences, Hodder-Arnold. ISBN 978-0-340-80763-7.[]
  5. Jolliffe I.T. Principal Component Analysis, Series: Springer Series in Statistics, 2nd ed., Springer, NY, 2002, XXIX, 487 p. 28 illus. ISBN 978-0-387-95442-4
  6. A. A. Miranda, Y. A. Le Borgne, and G. Bontempi. New Routes from Minimal Approximation Error to Principal Components, Volume 27, Number 3 / June, 2008, Neural Processing Letters, Springer
  7. Fukunaga, Keinosuke. Introduction to Statistical Pattern Recognition. Elsevier. 1990. ISBN 0122698517. 
  8. Jonathon Shlens, A Tutorial on Principal Component Analysis. 互联网档案馆存档,存档日期2012-03-02.
  9. Geiger, Bernhard; Kubin, Gernot (Sep 2012), Relative Information Loss in the PCA
  10. A.A. Miranda, Y.-A. Le Borgne, and G. Bontempi. New Routes from Minimal Approximation Error to Principal Components, Volume 27, Number 3 / June, 2008, Neural Processing Letters, Springer
  11. Bessel's correction Bessel's correction
  12. eig function Matlab documentation
  13. MATLAB PCA-based Face recognition software
  14. Eigenvalues function Mathematica documentation
  15. The Numerical Algorithms Group. NAG Library Routine Document: nagf_mv_prin_comp (g03aaf) (PDF). NAG Library Manual, Mark 23. [2012-02-16]. 
  16. The Numerical Algorithms Group. NAG Library Routine Document: nag_mv_prin_comp (g03aac) (PDF). NAG Library Manual, Mark 9. [2012-02-16]. (原始内容 (PDF)存档于2011-11-24). 


参考