主成分析(Principal Components Analysis)是一种在高维数据中发现模式的一种技术,在应用在人脸识别和数据压缩等领域。下面具体介绍一下该方法。
首先,介绍一下相关的数学基础:
对一个一维的样本集合X,其平均值为Xmean =∑ Xi /n,(i=1,2,...n)
标准差Xsd = squar(∑ (Xi -Xmean )2 /(n-1)),squar表示根号。
方差Xva = (Xsd )2 = (∑ (Xi -Xmean )2 /(n-1)
将上面的方差概念扩展到二维,我们引入一个协方差的概念,表示两个变量的相关性,如下:
协方差cov(X,Y)= ∑(Xi - Xmean )(Yi - Ymean )/(n-1),注意,若Y=X,则cov(X,X)即X的方 差。
那如果维数更多的时候,比如三维,我们需要考虑任意两唯之间的关系,需要计算cov(X,Y),cov(X,Z),cov(Y,Z)。为了表示方便,对一个n维的样本集,我们引入另一个概念,协方差矩阵,定义如下:
Cn*n =(Ci,j , Ci,j =cov(Dimi ,Dimj ))
显然,这是一个对称矩阵,因为 Ci,j = cov(Dimi ,Dimj )= cov(Dimj ,Dimi )=Cj,i ,对角线上为各元素的协方差。
特征值和特征向量:
对一个矩阵An*n ,若一个n唯列向量X使得A*X=r*X,其中,r为实数,则X为矩阵的特征向量,而r为矩阵的特征值,可以证明,n唯对称矩阵必有n个线性无关的特征向量。并且易证,如果X为其特征向量,则a*X也为其特征向量(a为一不为0的实数)。
下面介绍主成分析的步骤:
1 获取样本数据,设数据是n唯
2 对数据的每一唯计算其品均值,并将原来的数据分别减去对应唯的平均值,这样,修改后的数据每一唯的平均值均为0.
3 按上述方法计算协方差矩阵Cn*n
4 计算协方差矩阵的特征值和特征向量
5 根据特征值选择主成分,可以证明,特征值越大,其对应特征向量代表数据集的分量越大,因此,我们可以略去一些特征值较小的分量,比如原来n个特征向量,现在去掉特征值小的特征向量后变成p(p<n)个,则原来的数据集可以相应的减为p唯,这相当于给数据降唯,但由于保留了主要成分,信息损失比较小,这也是用它实现数据压缩的原理。
6 产生新的数据集。设原来的数据集用矩阵Rorig =[X1 ,X2 ,...... Xnum ]表示,num表示数据集的个数。各唯减去品均值后的数据用矩阵 Radjust =[Y1 ,Y2 ,...... Ynum ]表示,协方差矩阵的n个特征向量用V1 ,V2 ,...... Vn 表示,根据特征值大小选取其中的p个特征向量,表示为 W1 ,W2 ,...... Wp ,并用矩阵Rvec =[ W1 W2 ...... Wp ]表示,最后的数据集可以表示为Rfinal =( Rvec )T * Radjust ,其中,T表示转置,由于第一项是一个p*n的矩阵,第二项是一个n*num的矩阵,最后结果是一个p*num的矩阵,相当于原来的数据都变成了p唯。
7 恢复数据。如果n个特征向量都用到,那么数据可以完全恢复,否则会有一定的信息损失。根据转换公式 Rfinal =( Rvec )T * Radjust ,若用n个特征向量分析, ( Rvec )T 为一n*n的矩阵,易知
Radjust =( ( Rvec )T )-1 * Rfinal
由于n个特征向量相互正交,一般求得后会进行归一处理,这时 ( ( Rvec )T )-1 = ( ( Rvec )T )T = Rvec, 即
Radjust = Rvec * Rfinal
那么,原始数据即
Rorig = Rvec * Rfinal+ Wmean( Wmean表示原来减去的均值)
可以证明, p<n时,上述公式也成立,此时, Rvec 为一n*p的矩阵, Rfinal 为一p*n的矩阵。