首先,简单的介绍下PCA:
PCA即机器学习里面经提到的主成分分析(Principal Component Ayalysis),一般用来对高维数据进行压缩,提取低维特征。 首先我们看下面这幅图
第一幅图,假设二维平面内的六个点,我们想要寻找一个一维空间,将二维空间的点投影在一维空间里,使得点与点之间的分离性最好。从图中可以看到最佳投影方向大概是45°角的方向。第二幅图是一些三维空间的点,同样我们想找一个低维空间,使得三维数据投影在低维空间后,分离性最好。图中可知最好的低维空间是x1_x2平面。对于我们平时所处理的数据,通常都是成千上万维,而PCA的目的就是寻找一个低维空间将这些高维数据投影在低维空间里,使得在低维空间里这些数据具有良好的分离性。也就是说PCA最直接的目的是要寻找这样的一个低维空间,那么怎么去寻找这样的一个低维空间呢。具体数学方法如下:
假设我们有M*N²维人脸图片(M是样本数,每个样本的像素是N*N),对于每张图片我们可以拉成N²维的向量。下面直接贴出数学公式:
这是M. Turk 和 A. Pentland那篇论文对PCA的分析,初次看有些晦涩,下面我来说下我自己对PCA整个数学流程的理解:
suppose we have m samples,each is n dimension
step1: compute the mean of every feature μj = Σm Xj(i)/m (Xj(i)表示第i个样本的第j维特征的value)
step2:feature scaling and mean normalization Xj(i)= (Xj(i)-μj)/sj
这样我们就得到了每一个样本向量归一化的向量 Xj, 接下来我们就要去寻找最佳投影的低维空间
step3: compute the covariance matrix (求协方差矩阵 Σ是n*n的矩阵)
step4: compute the eigenvalues and eigenvectors(这里我们利用svd分解求特征值和特征向量) Σ = USV' (其中S是和Σ一样的n*n维的矩阵, U和V是酉矩阵, U和V也是n*n的矩阵)
下面是一段数学分析:
step5:descending sort the n eigenvalue and select the k most biggest.
这样我们就得到了一个n*k维的特征空间(由上分析可知U是一个正交矩阵,所以k个最大特征值对应的eigenvectors也是正交的,k个最大的eigenvectors也就是新的维数空间的k个基,这样我们就找到了一个低维的特征空间)
对于任意给定的特征(xi)将其投影在新的低维空间里就是: (zi就是我们得到的将维之后的特征由原来的n维降为k维)对于我们给定的人脸图片由于每一张图片是n²*1维所以得到的酉矩阵U是n²*k 得到降维后的维数就是k维。
同样如果我们知道了降维后的特征要想还原为原有特征,则xi = U*zi即可