假定我们有m个观测值,每个观测值有n个特征(变量),那么将其按列排成n行m列的矩阵,并且每一行都减去该行的均值,得到矩阵X(减去均值是为了下面方便求方差和协方差)。并按行把X整理成n个行向量的形式,即用X1, X2, ..., Xn来表示n个原始变量。
第一部分的例子说明了通过一个n×n的转换矩阵对数据集中的原始变量进行线性组合,就可以得到n个新的变量。转换矩阵可以有很多个,也就是变换的坐标系有很多个,但是只有一个可以由原始变量得到主成分。我们先不管这个独特的矩阵是怎么得到的,假定我们已经得到了这个转换矩阵P,那么把转换后的n个主成分记为Y1, Y2, ..., Yn,那么由Y=PX,就可以得到主成分矩阵:
这n个行向量都是主成分,彼此之间是线性无关的,按照对数据变化解释力的强度降序排列(并非被挑出来的前k个行向量才叫做主成分)。
那么如何衡量每一个主成分所能解释的数据变化的大小呢?
我们先看n=2时,主成分为Y1和Y2,原变量为X1和X2。从下图可见Y1为长轴变量,数据沿着这条轴的分布比较分散,数据的变化比较大,因此可以用Y1作为第一主成分来替代X1和X2。那用什么指标来量化数据的变化和分散程度呢?用方差!
我们把向量X1和X2的元素记为x1t、x2t(t=1,2,...,m),把主成分Y1和Y2的元素记为y1t、y2t(t=1,2,...,m),那么整个数据集上的方差可以如下表示(数据早已经减去均值,所以行向量的均值为0)。
第一主成分Y1所能解释的数据的变化,可以用主成分的方差来衡量,也就是:
也可以用主成分的方差占总体方差的比重来衡量,这里假设为85%,这个比例越大,则反映的信息越多。
我们回到有n个原始变量和n个主成分的例子,那么选择合适的转换矩阵P来计算得到主成分矩阵Y时,要让单个主成分在数据集上的方差尽可能大。那么选择主成分的第一个一般标准是少数k个主成分(1≤k<n)的方差占数据集总体方差的比例超过85%。
于是我们初步解决了第二个问题和第三个问题,也就是如果已知转换矩阵P和主成分矩阵Y,那么就用一个主成分的方差占数据集总体方差的比例,来衡量该主成分能解释的数据集方差的大小,然后按这个比例从大到小进行排序,并进行累加,如果到第k个主成分时,累加的比例恰好等于或者超过85%,那么就选择这k个主成分作为新变量,对数据集进行降维。
接下来问题倒回至第一个问题,也就是求解第二个问题和第三个问题的前提:转换矩阵P怎么算出来?
三、求解转换矩阵和主成分矩阵
前面我们说了主成分矩阵Y的一个特点是,单个主成分向量Yi的方差占总体方差的比例尽可能大,而且按照方差占比的大小,对所有的主成分进行降序排列。另外还有一个特性是所有的主成分都是线性无关的,或者说是正交的,那么所有主成分中,任意两个主成分Yi和Yj的协方差都是0。
第一个特点涉及到主成分的方差,第二个特点涉及到主成分之间的协方差,这自然而然让我们想到协方差矩阵的概念,因为主成分矩阵Y的协方差矩阵的对角元素,就是每个主成分的方差,而非对角元素就是协方差。由于协方差为0,那么主成分矩阵的协方差矩阵为一个对角矩阵,且对角元素是降序排列的!
由于数据集已经减去了均值,那么同样,主成分矩阵中的行向量也是0均值的,于是某两个主成分的协方差为;