主成分分析和因子分析是数据降维的常用手段,其中以特征值为载体,在不断降维“近似”原本的协方差矩阵。
CSDN中一些文章在介绍这个问题或者叫“特征值分解”时,讲得都比较学术化,今天用一个小例子,还是面向新人,来引导理解“特征值分解”和“矩阵近似”(图像近似 也是同样的原理)。
在主成分分析和因子分析中,都是从协方差矩阵入手的。(PS:有的人会说数据先单位化,然后求出相关矩阵,随后从相关矩阵入手。其实,数值上是这样算,但是原理说的不对。主成分分析和因子分析的入手点一定是协方差矩阵,之所以能够使用相关系数矩阵,那是因为单位化后的数据,它的协方差矩阵和相关系数矩阵是相等的。)
咱们还是先介绍例子,然后再讲原理。如果你的理论基础好,后面的原理一看就明白了。
有一个单位化后的协方差矩阵如下:
1 | 0.8 | 0.6 |
0.8 | 1 | 0.4 |
0.6 | 0.4 | 1 |
它的3个特征值分别是如下:
特征值 | 2.21493472 | 0.6226418 | 0.16242348 |
3个特征值对应的单位化的特征向量如下(每一列对应一个特征值,与上面的特征值相对应):
特征向量 | ||
0.6345775 | -0.1549789 | 0.75716113 |
0.5843738 | -0.5449251 | -0.6013018 |
0.5057852 | 0.82403773 | -0.2552316 |
我们知道,原始矩阵可以使用特征向量矩阵加上特征值矩阵进行等价计算,也就是下面的公式:
其中,P 是这个矩阵 A 的特征向量组成的矩阵,Λ 是特征值组成的对角矩阵,Λ里面的特征值可以由大到小排列后面用。
由于原始矩阵A是对角矩阵,所以,由特征向量组成的矩阵P是正交矩阵。所以,P的逆矩阵P^(-1)就是P的转置矩阵P'。
这样,上面的公式就变为:
下面开始对原始协方差矩阵A的“近似”实验。
当我们用到全部3个特征值和对应的特征向量来计算时,这是一个100%对原始矩阵A进行了还原,即
这个计算下得到的就是原始的矩阵A:
1 | 0.8 | 0.6 |
0.8 | 1 | 0.4 |
0.6 | 0.4 | 1 |
下面,我们不用3个特征值和特征向量,减少为用2个特征值和对应的特征向量,也就是:
这个计算下得到的就是对原始矩阵A只采用2个特征值和特征向量进行近似的结果,近似的结果如下:
0.907 | 0.874 | 0.631 |
0.874 | 0.941 | 0.375 |
0.631 | 0.375 | 0.989 |
最后,我们不用2个特征值和特征向量,减少为只用1个特征值和对应的特征向量,也就是:
这个计算下得到的就是对原始矩阵A只采用1个特征值和特征向量进行近似的结果,近似的结果如下:
0.892 | 0.821 | 0.711 |
0.821 | 0.756 | 0.655 |
0.711 | 0.655 | 0.567 |
可以看到,对原始矩阵A的“近似”效果来看,只采用1个特征值来近似,图像有点失真的太多了。而采用2个特征值来近似的矩阵结果,矩阵近似的还算可以。
接下来,谈一下采用2个特征值来近似的矩阵结果的方差解释占比为多少?用近似矩阵的主对角线求和=0.907+0.941+0.989=2.838。而原始矩阵A的主对角线求和=1+1+1=3。所以,近似矩阵的方差解释率为 2.838/3=94.6%,这个数值也就是最大的2个特征值之和除以3的结果,即 (2.21493472+0.6226418)/3=94.6%。
这就是利用特征值对原始协方差矩阵进行不同“像素”近似的结果。
所以,关于数据降维,我们可以从多个角度去理解这件事,而上面提到的比较直观的矩阵“近似”的角度,从学术上讲不一定很严谨,但是对于给新手一个直观的感性认识,那是相当有帮助的,供新人参考。
(精算部落)