设X是n个特征组成的矩阵,每种特征包含m的采样值。则有
X=X11X21⋮Xn1X12X22⋮Xn2⋯⋯⋱⋯X1mX2m⋮Xnm=[X1X2⋯Xn]T
每种特征的均值或者说期望为ui=E(Xi)=(Xi1+Xi2+⋯+Xim)/m,对X进行去均值,也就是每个特征值都减去特征均值得到新的矩阵
Y=X11−E(X1)X21−E(X2)⋮Xn1−E(Xn)X12−E(X1)X22−E(X2)⋮Xn2−E(Xn)⋯⋯⋱⋯X1m−E(X1)X2m−E(X2)⋮Xnm−E(Xn)=[Y1Y2⋯Yn]T
对于协方差,计算公式为Cov(Xi,Xj)=E{(Xi−E(Xi))(Xj−E(Xj))},数学性质以及推导请见概率论篇。由此我们得到协方差矩阵RX
=E{(X1−u1)(X1−u1)}E{(X2−u2)(X1−u1)}⋮E{(Xn−un)(X1−u1)}E{(X1−u1)(X2−un)}E{(X2−u2)(X2−u2)}⋮E{(Xn−un)(X2−u2)}⋯⋯⋱⋯E{(X1−u1)(Xn−un)}E{(X2−u2)(Xn−un)}⋮E{(Xn−un)(Xn−un)}=E(YYT)
注意这里的协方差是计算每个特征向量之间的值,而和特征数目m无关,所以只与特征个数有关,是一个n×n的矩阵。协方差矩阵具有对此且半自定性。
对于协方差矩阵RX来说,它的最大特征向量也将是PCA中的主成分。证明如下
PCA要找的方向即数据最广、方差最大(方差越大说明这个特征可能越容易影响结果,即信息越多)的方向,设方向向量为α,我们可以将去均值后的数据Y投影到α上得
PαY=αTααTYαT
其方差为
E∣PαY∣2=E∣∥α∥αTYαT∣=E∣aTYa∣2
其中a=∥α∥α,这便是我们的优化目标。
我们的目的是在∥a∥=1的约束下求方差最大值。
此时有
max{E∣aTYa∣2}=max{E(aTYaaTYTa)}=max{E(aTRXa)}
继续使用在SVM中讲过的拉格朗日乘数法得到拉格朗日函数
L(a,λ)=aTRXa−λ(aTa−1)
求解驻点零点可得
RXa=λa
即a是协方差矩阵的一个特征向量,其带入原式得
max{aTRXa}=max{aTλa}=maxλ
当λ即特征值取最大值时,得方差最大值,且此时对应得特征向量为PCA得第一主方向。当然在实际运算时直接对Y做SVD,速度更快。
提示
设最大方向模长为1是消除向量大小对分析的影响,实际线代中求解特征向量后的单位化。