我们现在来看一下PCA算法是如何实现的,我们通过一个具体实例来理解,假设我们有这样一些标准化后的数据:[-1,-2],[-1,0],……,[2,1],[0,1]。我们写成向量的形式如下:
我们还可以在二维坐标系中画出来:
**PCA主要的目的是降维简化数据,这些数据本就是二维,想要再降维则需要重新找一个方向,并把这些点映射到这个方向上(降到1维)。**试想,怎么才能找到这个方向,且不损失大部分信息呢?PCA的做法是,找到新映射的方法需要满足如下两个原则:
**在新映射的方向上每个数据的映射点方差尽可能大。**因为方差大的数据所包含的信息量越大。
新映射的方向应彼此正交,这样映射出的坐标点选取才更有意义。
寻找新映射也可以看作基变换,我们可以不断旋转基,寻找满足上面两个原则的情况。如下图所示,中间的映射方向图里数据在新基上映射点的方差就比右边图映射点方差大的多。而方差大则表示该数据在该方向上含有的信息量多,反之另一个新基的方向上含有的信息量就少的多。如果这个方向上的信息量非常少,即使舍去也无伤大雅,我们就可以考虑将其舍去,实现降维的操作。
新基可以看成是由以前标准直角坐标系旋转而成,在线性代数中,这样的坐标轴旋转操作可以通过原本直角坐标系坐标乘转换矩阵得到:
所以我们就将问题转换成找转移矩阵W上,如何去求W呢?我们希望降维后的数据要尽可能的与原数据非常接近(不丢失信息)。我们可以计算转换后的坐标Z与转换之前的坐标X之间的距离:
因此为了让转换距离最小,我们可以将问题等价转换成:
由于中间推导过程较为复杂,故在此省略,最后求解推导的结果为:
这不正是特征值的定义公式吗?所以只需要对协方差矩阵进行特征值分解,并将求得的特征值排序,取前N(PCA所要降低的目标维度)个特征值构成的向量W,即为PCA的解。