PCA主成分分析
PCA通过线性变换/基变换,将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量对高维数据进行降维。各维度的线性相关性用数据的协方差矩阵来刻画。
Part1 矩阵基础
内积和投影
两向量的内积被定义为:
内积的几何意义
有、两个向量,如果为单位向量,那么向量与向量的内积的几何意义就是向量向向量上的投影的长度,是个标量值。
基与坐标
在代数中,我们经常用一个点的坐标来表示一个向量(坐标系原点指向该坐标点的向量)。我们知道任意一个向量都可以由一组基的线性组合来表示。例如在二维空间中,我们用直角坐标系x轴和y轴这组基来表示。但是,实际上任何两个线性无关的二维向量都可以成为一组基。
例如,(1,0)和(0,1)可以表示一组基,(1,1)和(-1,1)单位化后和)也可以表示二维空间中的一组基。一般地,我们希望基是单位向量即模长为1,因为从内积的几何意义可以看到,如果基的模为1,那么就可以方便的用向量点乘基的方式直接获得该向量在新基上的坐标,即将该向量向基上进行投影得到在该基上的坐标值。
现在我们想获得点在新基上的坐标,即在这两个方向上的投影,那么根据内积计算公式,我们可以得到在新基上的坐标为
需要注意的是,基的唯一要求就是线性相关,不一定需要满足正交,但是正交基有较好的性质,因此一般都使用正交基。
基变换的矩阵表示
一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵,然后将M个向量按列组成矩阵,那么两个矩阵的乘积就是变换结果,其中的第m列为中第m列变换后的结果。(新的一组基按行排列,向量(坐标)按列排列)
需要注意的是,这里的R可以小于N,因为R决定了数据点(即向量)经变换以后的维度。也就是说,我们可以将一个N维数据点通过矩阵乘法变换到更低维度的空间中去,变换后点的维度取决于基的个数R。因此这种矩阵相乘的表示(原数据点向新的坐标系中去投影,这里矩阵刻画了一组正交基)也可以表示为降维变换。
更进一步,上述分析同时又给 矩阵相乘 找到了一种物理的解释:两个矩阵相称的意义是将右边矩阵中的每一列列向量变换到由左边矩阵中每一行行向量为基所表示的空间中去(将向量从原空间的刻画变换到目标空间进行刻画),即一个矩阵表示由一组新基构成的空间,也表示了一种线性变换。
Part2 PCA原理
协方差矩阵及优化目标
从上述分析我们可以看出,当新基的维数小于原来的维数时可以对数据进行降维操作。现在面临的问题是,我们该如何找到这组新基,使得既能对数据进行降维,又尽可能的保留原数据的信息。我们知道了矩阵乘法就是向新基投影的过程,也就是PCA是将一组N维特征投影到K维(K<N)同时又保留更多的特征。
我们如何去衡量?
也就是投影后尽量少的重叠,即投影值尽可能的分散。
方差
这种投影值的分散程度在数学上可以用方差进行刻画。因此,PCA问题就转化成了寻找K维的新基,使得数据变换到这组基上后方差值最大。
协方差
从二维到一维的降维,只需要找到一个一维基使得方差最大,但是三维降到二维呢?我们需要找到两个基让这个三维数据投影到两个基上,如果我们找方差最大的两个基,会发现他们线性相关,这和一个基没什么区别,不能表达更多的信息,所以我们需要添加限制条件,我们希望这两个基彼此线性无关,扩展到K个基也是一样。
数学上使用协方差表示样本在两个维度间的相关性,可以表示为(a,b为样本在这两个维度上的坐标值)(我们假设样本点在每个维度上零均值):
m为样本点的个数,m越大协方差估计的越准确。
当协方差为零时,表示两向量完全独立。(即对于这m个数据点而言在这两个维度上是线性无关的,这两个维度是互相垂直的)为了让协方差为零,我们选择第二个基时只能在与第一个基正交的方向上选择。因此保证最终选择的两个方向一定满足正交。
需要注意的是,协方差描述的各坐标维度的相关性是针对具体数据点(即具体样本)而言的,这批数据的x坐标和y坐标不相关,但是换一批数据x和y可能就相关了。因此,协方差是需要针对具体样本而言的(具体问题,具体样本服从的分布)。样本可以在x,y这组基上描述,也可以变换到新基上描述,但样本各维度的协方差将会发生变化。仔细体会样本、基(坐标系)、协方差。谈协方差绝不可脱离了样本和选择怎样的坐标系!
至此,我们得到降维问题的优化目标:将一组N维向量降为K为(K大于0且小于N),其目标为选择K个单位正交基,使得原始数据变换到这组基上以后,各字段(维度间)两两间协方差为0,而每个字段(维度)的方差尽可能大。简言之,在正交约束条件下(我们要求新基是两两正交的),取最大的K个方差
协方差矩阵的对角化
上述优化目标,就是等价于将数据(样本)点的协方差矩阵对角化:即除对角线以外的其他元素化为0,并且对角线上的元素按从大到小顺序排列。
我们将进一步看数据点在原坐标系下的协方差矩阵与基变换以后的协方差矩阵的关系。
设由数据点组成矩阵,在原坐标系下的协方差矩阵为,而是一组基按行排列成矩阵,设,则为进行基变换以后,在新坐标系下表示的数据点所组成的矩阵。设Y的协方差矩阵为(注意,此时已在新的坐标系下),我们推导一下与的关系:
现在,事情已经很明白了就是要找到一组正交基使得原协方差阵对角化,为对角矩阵,并且对角线元素按从大到小排列,那么的前K行就是我们要找的基,用的前K行组成的矩阵乘以X就使得数据点从N维降到了K维并满足上述优化条件。
数据点经过变换以后从直角坐标系坐标,变为了新基下的坐标
PCA算法步骤
- 将原始数据按列组成矩阵
- 将的每一行(代表一个维度)进行零均值化,即减去这一行的均值
- 求出协方差矩阵
- 求出协方差矩阵的特征值和对应的特征向量
- 将特征向量按对应特征值大小从上到下按行排成矩阵,去前k行组成矩阵P
- Y=PX就是降维后的数据