PCA是Principal ponent analysis的缩写,中文翻译为主元分析/主成分分析。它是一种对数据进行分析的技术,最重要的应用是对原有数据进行简化。正如它的名字:主元分析,这种方法可以有效的找出数据中最“主要”的元素和结构,去除噪音和冗余,将原有的复杂数据降维,揭示隐藏在复杂数据背后的简单结构。它的优点是简单,而且无参数限制,可以方便的应用与各个场合。因此应用极其广泛,从神经科学到计算机图形学都有它的用武之地。被誉为应用线性代数最有价值的结果之一。
1、PCA原理
从线形代数的角度来看,PCA的目标就是使用另一组基去重新描述得到的数据空间。而新的基要能尽量揭示原有的数据间的关系,而这个基即最重要的“主元”。PCA的目标就是找到这样的“主元”,最大程度的去除冗余和噪音的干扰。
设:Y = PX(1)
并定义:pi表示P的行向量,xi表示X的列向量,yi表示Y的列向量。
公式1表示不同基之间的转换,在线性代数中,它表示P从X到Y的转换矩阵,在几何上,P对X进行旋转和拉伸得到Y。
将公式1展开:
-
,
列向量
可得到yi表示xi与P中对应列的点积,相当于是在对应向量上的投影。因此,P的行向量事实上就是一组新的基,P的行向量就是PCA中所谓的“主元”。
为了使得获得Y具有类间方差大,类方差小,冗余信息少的特点,下面将对P的求解进行分析。
1.1 最大化方差
假设我们还是将一个空间中的点投影到一个向量中去。首先,给出原空间的中心点:
假设u1为投影向量,投影之后的方差:
根据
,利用拉格朗日乘子法:
-
对上式求导,使之为0:
这是一个标准的特征值表达式了,λ对应的特征值,u对应的特征向量。上式的左边取得最大值的条件就是λ1最大,也就是取得最大的特征值的时候。其中,S可以看做X的协方差矩阵。
1.2 最小化冗余信息
通常在试验中引入了一些不必要的变量,从而造成数据的冗余,对于复杂的情况,需要借助协方差来进行衡量和判断:
A,B分别表示不同的观测变量所记录的一组值,在统计学中,由协方差的性质可以得到:
-
,且当且仅当观测变量A,B独立。
将A,B写成行向量:
,
协方差可以表示为:
那么,对于一组具有m个观测值,n个采样时间点的采样数据X,将每个观测变量的值写成行向量,可以得到m*n的矩阵:
,
定义协方差矩阵如下:
-
Cx是m*n的平方对称矩阵。Cx对角线上的元素是对应的观测变量方差。非对角线上的元素是对应的观测变量之间的协方差。
协方差矩阵Cx包含了所有观测变量之间的相关性度量。更重要的是,包含了所有观测变量之间的相关性度量。
一般情况下,初始数据的协方差矩阵总是不太好的,表现为信噪比不高且变量间相关度大。PCA的目标就是通过基变换对协方差矩阵进行优化。
在线性代数中,上述问题可以描述成:
寻找一组正交基组成的矩阵P,有Y=PX,使得
则P的行向量(也就是一组正交基),就是数据X的主元向量。
是对角阵。
对于进行推导:
-
定义,则A是一个对称阵,对A进行对角化求取特征值得,A=EDET,D是一个对角阵,E是对称阵A的特征向量排成的矩阵。
取P=ET,则行如下计算:
,由线形代数可知矩阵P有性质,从而进
可知此时的P就是我们需要求得变换基。X的主元即是的特征向量,也就是P的
行向量。矩阵对角线上的第i个元素是数据X在方向Pi的方差。
1.3 最小化损失
假设输入数据x是在D维空间中的点,那么,我们可以用D个正交的D维向量去完全的表示这个空间(这个空间中所有的向量都可以用这D个向量的线性组合得到)。在D维空间中,有无穷多种可能找这D个正交的D维向量。
假设找到了这D个向量,(ui为列向量) 可以得到:
-
用近似法来表示投影后的点:
上式表示,得到的新的x是由前M 个基的线性组合加上后D - M个基的线性组合,注意这里的z是对于每个x都不同的,而b对于每个x是相同的,这样我们就可以用M个数来表示空间中的一个点,也就是使得数据降维了。但是这样降维后的数据,必然会产生一些扭曲,我们用J描述这种扭曲,我们的目标是,使得J最小:
其含义是对于每一个点,将降维后的点与原始的点之间的距离的平方和加起来,求平均值,我们就要使得这个平均值最小。令:
将上面得到的z与b带入降维的表达式:
-
将上式带入J的表达式得到:
再用上拉普拉斯乘子法,可以得到,取得我们想要的投影基的表达式为:
这里又是一个特征值的表达式,我们想要的前M个向量其实就是这里最大的M个特征值所对应的特征向量。J可以化简为:
也就是说当误差J是由最小的D - M个特征值组成的时候,J取得最小值。
根据1.1、1.2、1.3节,如果X矩阵的列向量代表m维空间的数据,共有n组,对X的协方差矩阵求解特征方程,特征向量按特征值的由大到小排列构成P矩阵的行向量,令Y=PX,这个过程称作PCA主成分分析,同时我们很容易得到如下结论:
-
(1) P矩阵的行向量代表X的主元,若用P矩阵前k列作为描述X的基,其误差J是由最小的D - M个特征值组成。
(2) P矩阵的行向量pi所对应的特征值描述yi(Y的第i行)的方差,特征值越大,对应的方差越大,数据越离散,即X中的数据在pi轴的投影越分散。
(3)根据1.2可知,,这样在以P为基的空间,Y的冗余最小。
因此,PCA的流程如下:
(1)采集数据形成m*n的矩阵。m为观测数据的维数,n为观测样本的个数。
(2)在每个观测变量(矩阵行向量)上减去该观测变量的平均值得到矩阵X。
(3)对XXT进行特征值分解(SVD分解),取特征向量组成P的行向量以及对应的特征跟。
2、PCA应用
PCA的应用方向很多,主要应用于多源融合、数据降维、分析数据互相关性以及模式识别中,下面就遥感图像融合和采用TPCA(二次PCA)做图像边缘提取做简要的说明。
2.1 遥感图像融合
为了将多频谱段拍摄的遥感图像以及高分辨率的图像融合在一起从而获得包含多个谱
-
段信息的高分辨率图像,可以采取的办法是将多谱段每个图像看成列向量,并将其组成矩阵A,对矩阵A进行PCA主成分分析,可以得到一系列主元,由于段谱段图像之间均经过配准且具有较高的相关度,他们之间只是存在细微的区别,我们的目的是保留这些细微的区别,因此将第一个主元替换为高分辨率的图像,对所有主元进行重建,所得到的图像即为融合后图像。
图3 遥感图像融合流程
2.2 TPCA图像分割
由于PCA在数据集聚上具有方向性,为了提高类聚合度, 需选择能将尽量多的相似数据聚在一起的投影方向, 这就说明PCA总是从数据集中找相似的数据子集, 且每个子集的类离散度要最小, 即数据要相似, 其反映在图像上就是灰度值要一致。当用部分主分量来近似表示数据集时, 图像中的大块灰度平滑区域就能被抽取出来, 其中与较大特征值对应的特征向量就是由灰度平滑区域的数据构成的。
-
另外PCA技术在处理单幅图像时, 在垂直方向上存在方向性。由于PCA是将列看成一类, 为了使类散布度最小, 在重建图像时, 其找到的最佳投影方向会将同一列中的数据向灰度均值方向拉平。在垂直边缘处, 由于两边的灰度产生突变, 因此为了保证类散度最小, 重建部分会在垂直边缘处产生模糊, 使该列上的所有像素的灰度相互靠拢,如图4所示。
图4 原图与重建图
黑块的上下两端都产生了模糊现象,这表明经过PCA处理后, 边缘处的像素灰度产生了变化, 像素由白色和黑色变成灰色, 也就是灰度值变变化, 像素由白色和黑色变成灰色, 也就是灰度值变因此利用PCA的这种方向特性, 就可以通过检测这种变化来检测边缘。根据以上特点,在水平和垂直方向均做PCA(TPCA),这样两方向的边缘均提取出来,其算法流程如下:
-
图5 TPCA流程图以及各边缘提取算法对比
PCA的应用还有许多,此处只是一些PCA的简单应用,目前对PCA的改进有很多很多,由于PCA的方法是沿数据集方差最大方向寻找一些相互正交的轴,但对于有些应用场合,我们需要的是沿最大统计方向,于是出现了ICA。又如PCA是线性变换,而现在流行的kernel-PCA的一类方法就是采用非线性对原有的PCA进行改进。PCA背后的思想很多,因此有必要对其进行深入的探索。
-
因篇幅问题不能全部显示,请点此查看更多更全内容