1. 主成分分析 ( Principal Component Analysis , PCA )
是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。计算主成分的目的是将高维数据投影到较低维空间.
2. 协方差矩阵:(reference:http://pinkyjie.com/2010/08/31/covariance/)
统计学的基本概念
学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。
均值:
标准差:
方差:
很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。【1】
为什么需要协方差?
上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:
来度量各个维度偏离其均值的程度,协方差可以这么来定义:
协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。
从协方差的定义上我们也可以看出一些显而易见的性质,如:
协方差多了就是协方差矩阵
上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算个协方差(C组合数N取2),那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:
这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为
可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
3. 协方差矩阵之主成分分析(reference: http://pinkyjie.com/?p=404)
PCA的缘起
PCA大概是198x年提出来的吧,简单的说,它是一种通用的降维工具。在我们处理高维数据的时候,为了能降低后续计算的复杂度,在“预处理”阶段通常要先对原始数据进行降维,而PCA就是干这个事的。本质上讲,PCA就是将高维的数据通过线性变换投影到低维空间上去,但这个投影可不是随便投投,要遵循一个指导思想,那就是:找出最能够代表原始数据的投影方法。这里怎么理解这个思想呢?“最能代表原始数据”希望降维后的数据不能失真,也就是说,被PCA降掉的那些维度只能是那些噪声或是冗余的数据。这里的噪声和冗余我认为可以这样认识:
这么一分析,那么PCA的最终目的就是“降噪”和消灭这些“冗余”的维度,以使降低维度的同时保存数据原有的特征不失真。后面我们将结合例子继续讨论。
协方差矩阵——PCA实现的关键
前面我们说了,PCA的目的就是“降噪”和“去冗余”。“降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。那首先的首先,我们得需要知道各维度间的相关性以及个维度上的方差啊!那有什么数据结构能同时表现不同维度间的相关性以及各个维度上的方差呢?自然是非协方差矩阵莫属。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。我们要的东西协方差矩阵都有了,先来看“降噪”,让保留下的不同维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。达到这个目的的方式自然不用说,线代中讲的很明确——矩阵对角化【2】。而对角化后得到的矩阵,其对角线上是协方差矩阵的特征值,它还有两个身份:首先,它还是各个维度上的新方差;其次,它是各个维度本身应该拥有的能量(能量的概念伴随特征值而来)。这也就是我们为何在前面称“方差”为“能量”的原因。也许第二点可能存在疑问,但我们应该注意到这个事实,通过对角化后,剩余维度间的相关性已经减到最弱,已经不会再受“噪声”的影响了,故此时拥有的能量应该比先前大了。看完了“降噪”,我们的“去冗余”还没完呢。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。PCA的本质其实就是对角化协方差矩阵。
下面就让我们跟着上面的感觉来推推公式吧。假设我们有一个样本集X,里面有N个样本,每个样本的维度为d。即:
将这些样本组织成样本矩阵的形式,即每行为一个样本,每一列为一个维度,得到样本矩阵S:。我们先将样本进行中心化,即保证每个维度的均值为零,只需让矩阵的每一列除以减去对应的均值即可。很多算法都会先将样本中心化,以保证所有维度上的偏移都是以零为基点的。然后,对样本矩阵计算其协方差矩阵,按照《浅谈协方差矩阵》里末尾的update,我们知道,协方差矩阵可以简单的按下式计算得到:
下面,根据我们上文的推理,将协方差矩阵C对角化。注意到,这里的矩阵C是是对称矩阵,对称矩阵对角化就是找到一个正交矩阵P,满足:。具体操作是:先对C进行特征值分解,得到特征值矩阵(对角阵)即为,得到特征向量矩阵并正交化即为。显然,。假如我们取最大的前p(p 实际上,这个新的特征向量矩阵就是投影矩阵,为什么这么说呢?假设PCA降维后的样本矩阵为,显然,根据PCA的目的,中的各个维度间的协方差基本为零,也就是说,的协方差矩阵应该为。即满足: 而我们又有公式: 代入可得: 由于样本矩阵的每一行是一个样本,特征向量矩阵的每一列是一个特征向量。右乘相当于每个样本以的特征向量为基进行线性变换,得到的新样本矩阵中每个样本的维数变为了p,完成了降维操作。实际上,中的特征向量就是低维空间新的坐标系,称之为“主成分”。这就是“主成分分析”的名称由来。同时,的协方差矩阵为近对角阵,说明不同维度间已经基本独立,噪声和冗余的数据已经不见了。至此,整个PCA的过程已经结束,小小总结一下: 【1】、 自由度(degree of freedom, df)是指当以样本的统计量来估计总体的参数时,样本中独立或能自由变化的数据的个数称为该统计量的自由度。 例如,在估计总体的平均数时,样本中的n个数全部加起来,其中任何一个数都和其他数据相独立,从其中抽出任何一个数都不影响其他数据(这也是随机抽样所要求的)。因此一组数据中每一个数据都是独立的,所以自由度就是估计总体参数时独立数据的数目,而平均数是根据n个独立数据来估计的,因此自由度为n。但是为什么用样本估计总体的方差时,方差的自由度就是(n-1)? s2= å(X-m)2/n 从此公式我们可以看出总体的方差是由各数据与总体平均数的差值求出来的,因此必须将m固定后才可以求总体的方差。因此,由于m被固定,它就不能独立自由变化,也就是方差受到总体平均数的限制,少了一个自由变化的机会,因此要从n里减掉一个。 假设一个样本有两个数值,X1=10,X2=20,我们现在要用这个样本估计总体的方差,则样本的平均数是: Xm=å X/n=(10+20)/2=15 现在假设我们已知Xm=15,X1=10,根据公式Xm=å X/n,则有: X2=2Xm-X1=2×15-10=20 由此我们可以知道在有两个数据样本中,当平均数的值和其中一个数据的值已知时,另一个数据的值就不能自由变化了,因此这个样本的自由度就减少一个,变成了(n-1)。依此类推:在一组数据中,当其平均数和前面的数据都已知时,最后一个数据就被固定而不能独立变化了,因此这个样本能够独立自由变化的数目就是(n-1)个. 【2】、 矩阵特征分解????详解
通俗地说就是经过矩阵的一系列行、列变换(初等变换)后,能得到一个只有主对角线上元素不全为零,而其他位置全为零的另一个矩阵(这个矩阵称为对角阵),这个过程就叫做矩阵的对角化,并不是所有矩阵都能对角化的。用矩阵术语来说,如果一个矩阵A能与对角矩阵B相似,则称A可对角化。