方差
s2=∑ni=1(Xi-E(X))2/(n-1)
协方差
cov(X,Y)=∑ni=1(Xi-E(X))(Yi-E(Y))/(n-1)
协方差矩阵
Cn*n=(Cij,Cij=cov(Dimi,Dimj))。
PCA步骤:
第一步:获得数据。
第二步:对于每一维的数据,用平均值除之。使得每一维的和为0。
第三步:之后,计算协方差矩阵C(对称矩阵)。
第四步:计算协方差矩阵的特征向量和特征值。其中特征向量为单位化的。
principle component 即为数据的最大的特征值所对应的特征向量。
将矩阵按照特征值从大到小排列。还可以提出一些过关紧要的特征值的特征向量。
如果这样做的话,那么将失去一些信息。比如原数据有n维,只取前p个特征值的特征向量。
那么最后的数据集将会是p维的。
最终我们想获得的是一个称之为feature vector的矩阵(注意,他其实是矩阵)。
FeatureVector=(eigvctr1,eigvctr2,....eigvctrp)。也就是,将选择的特征向量按照列排成一个矩阵。
第五步:FinalData=RowFeatureVector*RowDataAdjust.
RowFeatureVector是 FeatureVector的转置。RowDataAdjust是源数据矩阵减去平均值之后的转置,也就是每一列为一个数据。
FinalData是最后的数据集,每一列为一个数据。
PCA中使用的矩阵对角化相关的定理:
不是所有的矩阵都能够对角化的
n阶矩阵可对角化(即与对角矩阵相似P-1AP=B)的充分必要条件是:A的每个特征值对应的特征向量线性无关的最大个数等于该特征值的重数。
但是实对称矩阵一定可以对角化。
对于任意一个n阶实对称矩阵A,存在n阶正交矩阵T,使得
T-1AT=diag(a1,a2,...,an),a1,a2,...,an为特征值。
而求T的方法,即为,将所有的特征向量当做列向量,合成一个n*n矩阵。
那么就有T-1AT=diag(a1,a2,。。。,an)。