进一步得到主成分矩阵Y的协方差矩阵为:
那知道了主成分矩阵Y的协方差矩阵是对角矩阵,对于我们求出转换矩阵P和主成分矩阵有什么用呢?
有的,我们把Y=PX这个等式代入协方差矩阵中进行变换,就把已知的数据X和需要求的P都放到了协方差矩阵中:
比较神奇的是,主成分矩阵Y的协方差矩阵可以由数据集X的协方差矩阵得到。
数据集X的协方差矩阵显然是一个实对称矩阵,实对称矩阵有一系列好用的性质:
1、n阶实对称矩阵A必然可以对角化,而且相似对角阵的对角元素都是矩阵的特征值;
2、n阶实对称矩阵A的不同特征值对应的特征向量是正交的(必然线性无关);
3、n阶实对称矩阵A的某一特征值λk如果是k重特征根,那么必有k个线性无关的特征向量与之对应。
因此数据集X的协方差矩阵作为n阶实对称矩阵,一定可以找到n个单位正交特征向量将其相似对角化。设这n个单位特征向量为e1, e2, ..., en,并按列组成一个矩阵:
那么数据集X的协方差矩阵可以对角化为:
相似对角阵上的元素λ1、λ2、... 、λn是协方差矩阵的特征值(可能存在多重特征值),E中对应位置的列向量是特征值对应的单位特征向量。
接下来是高能时刻。我们把这个对角阵Λ上的元素从大到小降序排列,相应的把单位特征向量矩阵E里的特征向量也进行排列。我们假设上面已经是排列好之后的形式了,那么由于主成分矩阵的协方差矩阵也是元素从大到小降序排列的对角矩阵,那么就可以得到:
也就是取X的协方差矩阵的单位特征向量矩阵E,用它的转置ET来作为转换矩阵P,而X的协方差矩阵的特征值λ就是各主成分的方差!有了转换矩阵P,那么由PX我们自然就可以得到主成分矩阵Y。如果我们想把数据从n维降至k维,那么从P中挑出前k个行向量,去乘以数据集X就行,就可以得到前k个主成分。
至此第一个问题,也就是转换矩阵P和主成分矩阵的求解就可以完成了。
四、主成分的方差贡献率和累计方差贡献率
我们来拆细了看各主成分是怎么得到的。主成分可以由协方差矩阵的单位特征向量和原始变量进行线性组合得到。
P1就是由,X的协方差矩阵最大特征根λ1的单位特征向量e1转置而成(列向量变为行向量),于是第一主成分就是:
第一主成分的方差是最大的。然后第二主成分满足:(1)和第一主成分正交,(2)在剩余的其他主成分中,方差最大,表达式为: