PCA数学推导及原理(转)

原文: https://zhuanlan.zhihu.com/p/26951643
在多元统计分析中,主成分分析(Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析常常用于减小数据集的维数,同时保持数据集中的对方差贡献最大的特征。这是经过保留低阶主成分,忽略高阶主成分作到的。这样低阶成分每每可以保留住数据的最重要方面。

PCA在机器学习中常常被用到,是数据预处理的重要步骤。它主要基于如下考虑:html

  • 高维特征中不少特征之间存在相关性,含有冗余信息
  • 相比于低维数据,高维数据计算更复杂

PCA的数学原理

以下图,平面上有不少二维空间的特征点,若是想对这些特征点作特征降维(变为一维),应该怎么作呢?你们应该都知道须要进行投影,但还要考虑在哪一个方向上进行投影,例如图中须要投影到长箭头方向便可,但考虑为何不在短箭头上投影?算法

PCA本质上是一个有损的特征压缩过程,可是咱们指望损失的精度尽量地少,也就是但愿压缩的过程当中保留最多的原始信息。要达到这种目的,咱们但愿降维(投影)后的数据点尽量地分散。如图,相比于长箭头,若是在短箭头上进行投影,那么重叠的点会更多,也就意味着信息丢失的更多,于是选择长箭头方向。机器学习

 

基于这种思想,咱们但愿投影后的数据点尽量地分散。而这种分散程度在数学上能够利用方差来表示。设降维后的特征为[公式],也就是但愿[公式]尽量地大([公式]为特征[公式]中的值,[公式]为均值),而因为在PCA降维前,通常已经作了特征零均值化处理,为了方便,记[公式]函数

一样,为了减小特征的冗余信息,咱们但愿降维后的各特征之间互不相关。而不相关性能够用协方差来衡量。设降维后的两个特征为[公式][公式],则但愿[公式]为0。学习

现假设咱们的数据为优化

[公式]

构造出协方差矩阵,并乘以系数[公式],则编码

[公式]

能够看出[公式]的对角线元素就是各特征的方差,其余各位置的元素就是各特征之间的协方差。于是只须要降维后的数据协方差矩阵知足对角矩阵的条件便可。component

[公式]为原始数据[公式]作完PCA降维后的数据,知足[公式](矩阵乘法至关于映射,若[公式]为的列向量为基向量,那么就至关于映射到新的坐标系),[公式][公式]分别为对应的协方差矩阵,那么orm

[公式]

于是,咱们只须要计算出[公式],使[公式]知足对角矩阵的条件便可。而[公式]为实对称矩阵,咱们只须要对它作矩阵对角化便可。htm

PCA的原理基本就是这样,仍是挺简单的。

 

PCA的推导证实

PCA的构建:PCA须要构建一个编码器[公式],由输入[公式]获得一个最优编码[公式](若[公式],则作了降维编码);同时有一个解码器[公式],解码后的输出[公式]尽量地与[公式]相近。

PCA由咱们所选择的解码器决定,在数学上,咱们使用矩阵将[公式]映射回[公式],即[公式],其中[公式]定义解码的矩阵。

为了限制PCA的惟一性,咱们限制[公式]中全部列向量彼此正交且均有单位范数(不然[公式][公式]同比例增长、减小会产生无数个解)。

在数学上,为了知足PCA构建中的条件,咱们利用[公式]范数来衡量[公式][公式]的相近程度。即[公式],也就是[公式]

该最小化函数能够简化为

[公式]

于是,优化目标变为[公式],再带入[公式]

[公式]

再求偏导

[公式]

因而咱们能够获得编码函数[公式],PCA的重构操做也就能够定义为[公式]。问题接着就转化成如何求编码矩阵[公式]。因为PCA算法是在整个数据矩阵上进行编码,于是也要用[公式]对全部数据进行解码,因此须要最小化全部维上的偏差矩阵的Frobenius范数:

[公式]

咱们考虑[公式]的状况,则[公式]是一个单一贯量[公式],则上式能够转化为

[公式]

[公式]为标量,转置与自身相等,上式一般写做

[公式]

再将每个输入点叠加起来,咱们获得

[公式]

Frobenius范数简化成(考虑约束条件[公式]

[公式]

最后的优化目标能够利用[公式]以及拉格朗日乘数法来求解,可得最优的[公式][公式]的最大特征值对应的特征向量。

上面的推导特定于[公式]的状况,仅有一个主成分。通常来讲,矩阵[公式][公式]的前[公式]个最大的特征值对应的特征向量组成(利用概括法,将[公式]表示为[公式]的函数便可,须要两个辅助矩阵:单位对角矩阵[公式]以及[公式],省去证实过程)。

参考

相关文章
相关标签/搜索