dl书上这一节公式很多,相关的符号有点不习惯,借鉴相关博客(主要是协方差计算和pca具体原理和python实现部分的讲解)希望研究实例能更好帮助大家理解公式和计算过程的具体意义:
基础知识回顾:
首先是会看到一些熟悉的公式——
均值:
方差:
以下假设我们有二维数据(借用网上常用的数据好验证结果正确性):
第一步:
计算x,y的均值,此处计算可得x的均值=1.81,y均值等于1.91
第二步:
将矩阵中所有元素减去自己对应均值,x列所有元素-1.81,y列-1.91,得到
C=
然后将C的转置矩阵左乘以C得到(其实就是计算平方和)
除以(样本总数-1)=9
得到所求的协方差矩阵如下(也有公式为直接除以样本数总和,此处为10)
由此可知数据协方差矩阵的计算公式为
协方差(i,j)=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(样本数-1)
第三步:
求出协方差矩阵的特征值和特征向量(可使用matlab或者python快速计算)
特征值分别为0.0490834和1.28402771(选择后者因为特征值更大)
特征向量有以下两个
第四步:
将特征值按照从大到小的顺序排序,选择其中最大的k个,此处选择1个,然后将其对应的k个特征向量分别作为列向量(注意此处是选择右边两列,而不是横向的第二行,所以是-0.6778734)组成特征向量矩阵此处为(-0.6778734,-0.73517866)T
第五步:
最终降维结果是数据减去均值后的矩阵乘以特征向量组成的矩阵,在本例中就是将第二步得到的C矩阵乘以特征向量(-0.6778734,-0.73517866)T