原文: https://zhuanlan.zhihu.com/p/26951643
在多元统计分析中,主成分分析(Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。
PCA在机器学习中经常被用到,是数据预处理的重要步骤。它主要基于以下考虑:
- 高维特征中很多特征之间存在相关性,含有冗余信息
- 相比于低维数据,高维数据计算更复杂
PCA的数学原理
如下图,平面上有很多二维空间的特征点,如果想对这些特征点做特征降维(变为一维),应该怎么做呢?大家应该都知道需要进行投影,但还要考虑在哪个方向上进行投影,例如图中需要投影到长箭头方向即可,但考虑为什么不在短箭头上投影?
PCA本质上是一个有损的特征压缩过程,但是我们期望损失的精度尽可能地少,也就是希望压缩的过程中保留最多的原始信息。要达到这种目的,我们希望降维(投影)后的数据点尽可能地分散。如图,相比于长箭头,如果在短箭头上进行投影,那么重叠的点会更多,也就意味着信息丢失的更多,因而选择长箭头方向。

基于这种思想,我们希望投影后的数据点尽可能地分散。而这种分散程度在数学上可以利用方差来表示。设降维后的特征为
,也就是希望
尽可能地大(
为特征
中的值,
为均值),而由于在PCA降维前,一般已经做了特征零均值化处理,为了方便,记
。
同样,为了减少特征的冗余信息,我们希望降维后的各特征之间互不相关。而不相关性可以用协方差来衡量。设降维后的两个特征为
、
,则希望
为0。
现假设我们的数据为
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEK1grJTNEKyU1Q2xlZnQlNUIrJTVDYmVnaW4lN0JtYXRyaXglN0QrYV8xJTI2Yl8xJTVDJTVDK2FfMiUyNmJfMiU1QyU1QyslNUN2ZG90cyUyNiU1Q3Zkb3RzJTVDJTVDK2FfbSUyNmJfbSslNUNlbmQlN0JtYXRyaXglN0QrJTVDcmlnaHQlNUQrJTVDZW5kJTdCYWxpZ24lN0Q=.png)
构造出协方差矩阵,并乘以系数
,则
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyU1Q2ZyYWMlN0IxJTdEJTdCbSU3RFglNUVUWCslM0QrJTVDbGVmdCU1QislNUNiZWdpbiU3Qm1hdHJpeCU3RCslNUNmcmFjJTdCMSU3RCU3Qm0lN0QlNUNzdW1faSU1RW1hX2klNUUyJTI2JTVDZnJhYyU3QjElN0QlN0JtJTdEJTVDc3VtX2klNUVtYV9pYl9pJTVDJTVDKyU1Q2ZyYWMlN0IxJTdEJTdCbSU3RCU1Q3N1bV9pJTVFbWFfaWJfaSUyNiU1Q2ZyYWMlN0IxJTdEJTdCbSU3RCU1Q3N1bV9pJTVFbWJfaSU1RTIlNUMlNUMrJTVDZW5kJTdCbWF0cml4JTdEKyU1Q3JpZ2h0JTVEKyU1Q2VuZCU3QmFsaWduJTdE.png)
可以看出
的对角线元素就是各特征的方差,其他各位置的元素就是各特征之间的协方差。因而只需要降维后的数据协方差矩阵满足对角矩阵的条件即可。
设
为原始数据
做完PCA降维后的数据,满足
(矩阵乘法相当于映射,若
为的列向量为基向量,那么就相当于映射到新的坐标系),
,
分别为对应的协方差矩阵,那么
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNllfYyUzRCU1Q2ZyYWMlN0IxJTdEJTdCbSU3RFklNUVUWSU1QyU1QyslMjYlM0QlNUNmcmFjJTdCMSU3RCU3Qm0lN0QlMjhYUCUyOSU1RVRYUCU1QyU1QyslMjYlM0QlNUNmcmFjJTdCMSU3RCU3Qm0lN0RQJTVFVFglNUVUWFAlNUMlNUMrJTI2JTNEUCU1RVQlMjglNUNmcmFjJTdCMSU3RCU3Qm0lN0RYJTVFVFglMjlQJTVDJTVDKyUyNiUzRFAlNUVUWF9jUCslNUNlbmQlN0JhbGlnbiU3RA==.png)
因而,我们只需要计算出
,使
满足对角矩阵的条件即可。而
为实对称矩阵,我们只需要对它做矩阵对角化即可。
PCA的原理基本就是这样,还是挺简单的。
PCA的推导证明
PCA的构建:PCA需要构建一个编码器
,由输入
得到一个最优编码
(若
,则做了降维编码);同时有一个解码器
,解码后的输出
尽可能地与
相近。
PCA由我们所选择的解码器决定,在数学上,我们使用矩阵将
映射回
,即
,其中
定义解码的矩阵。
为了限制PCA的唯一性,我们限制
中所有列向量彼此正交且均有单位范数(否则
、
同比例增加、减少会产生无数个解)。
在数学上,为了满足PCA构建中的条件,我们利用
范数来衡量
与
的相近程度。即
,也就是![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1jJTVFJTJBJTNEYXJnbWluX2MlN0MlN0N4LWclMjhjJTI5JTdDJTdDXzIlNUUy.png)
该最小化函数可以简化为
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNiUyOHgtZyUyOGMlMjklMjklNUVUJTI4eC1nJTI4YyUyOSUyOSU1QyU1QyslMjYlM0R4JTVFVHgteCU1RVRnJTI4YyUyOS1nJTI4YyUyOSU1RVR4JTJCZyUyOGMlMjklNUVUZyUyOGMlMjklNUMlNUMrJTI2JTNEeCU1RVR4LTJ4JTVFVGclMjhjJTI5JTJCZyUyOGMlMjklNUVUZyUyOGMlMjkrJTVDZW5kJTdCYWxpZ24lN0Q=.png)
因而,优化目标变为
,再带入
,
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNmMlNUUlMkElM0RhcmdtaW5fYy0yeCU1RVREYyUyQmMlNUVURCU1RVREYyU1QyU1QyslMjYlM0RhcmdtaW5fYy0yeCU1RVREYyUyQmMlNUVUYyUyOEQlNUVURCUzRElfbCUyOSslNUNlbmQlN0JhbGlnbiU3RA==.png)
再求偏导
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNiU1Q25hYmxhX2MlMjgtMnglNUVURGMlMkJjJTVFVGMlMjklM0QwJTVDJTVDKyUyNi0yRCU1RVR4JTJCMmMlM0QwJTVDJTVDKyUyNmMlM0REJTVFVHgrJTVDZW5kJTdCYWxpZ24lN0Q=.png)
于是我们可以得到编码函数
,PCA的重构操作也就可以定义为
。问题接着就转化成如何求编码矩阵
。由于PCA算法是在整个数据矩阵上进行编码,因而也要用
对所有数据进行解码,所以需要最小化所有维上的误差矩阵的Frobenius范数:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1EJTVFJTJBJTNEYXJnbWluX0QlNUNzcXJ0JTdCJTVDc3VtXyU3QmklMkNqJTdEJTI4eCU1RSU3QiUyOGklMjklN0QtciUyOHglNUUlN0IlMjhpJTI5JTdEJTI5JTI5X2olNUUyJTdEfn5zdWJqZWN0fnRvfkQlNUVURCUzRElfbA==.png)
我们考虑
的情况,则
是一个单一向量
,则上式可以转化为
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1kJTVFJTJBJTNEYXJnbWluX2QlNUNzdW1fJTdCaSU3RCU3QyU3QyUyOHglNUUlN0IlMjhpJTI5JTdELWRkJTVFVHglNUUlN0IlMjhpJTI5JTdEJTdDJTdDXzIlNUUyfn5zdWJqZWN0fnRvfiU3QyU3Q2QlN0MlN0NfMiUzRDE=.png)
而
为标量,转置与自身相等,上式通常写作
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1kJTVFJTJBJTNEYXJnbWluX2QlNUNzdW1fJTdCaSU3RCU3QyU3QyUyOHglNUUlN0IlMjhpJTI5JTdELXglNUUlN0IlMjhpJTI5VCU3RGRkJTdDJTdDXzIlNUUyfn5zdWJqZWN0fnRvfiU3QyU3Q2QlN0MlN0NfMiUzRDE=.png)
再将每一个输入点叠加起来,我们得到
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1kJTVFJTJBJTNEYXJnbWluX2QlNUNzdW1fJTdCaSU3RCU3QyU3Q1gtWCU1RSU3QlQlN0RkZCU3QyU3Q19GJTVFMn5+c3ViamVjdH50b35kJTVFVGQlM0Qx.png)
Frobenius范数简化成(考虑约束条件
)
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNmFyZ21pbl9kJTVDc3VtXyU3QmklN0QlN0MlN0NYLVglNUUlN0JUJTdEZGQlN0MlN0NfRiU1RTIlNUMlNUMrJTI2JTNEYXJnbWluX2RUciUyOCUyOFgtWCU1RSU3QlQlN0RkZCUyOSU1RVQlMjhYLVglNUUlN0JUJTdEZGQlMjklMjklNUMlNUMrJTI2JTNEYXJnbWluX2RUciUyOFglNUVUWC1YJTVFVFhkJTVFVC1kZCU1RVRYJTVFVFglMkJkZCU1RVRYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtVHIlMjhYJTVFVFhkJTVFVCUyOSUyQlRyJTI4ZGQlNUVUWCU1RVRYJTI5JTJCVHIlMjhkZCU1RVRYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtMlRyJTI4WCU1RVRYZGQlNUVUJTI5JTJCVHIlMjhkZCU1RVRYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtMlRyJTI4WCU1RVRYZGQlNUVUJTI5JTJCVHIlMjhYJTVFVFhkZCU1RVRkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtVHIlMjhYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWF4X2RUciUyOFglNUVUWGRkJTVFVCUyOSU1QyU1QyslMjYlM0RhcmdtYXhfZFRyJTI4ZCU1RVRYJTVFVFhkJTI5fn5zdWJqZWN0fnRvfmQlNUVUZCUzRDErJTVDZW5kJTdCYWxpZ24lN0Q=.png)
最后的优化目标可以利用
以及拉格朗日乘数法来求解,可得最优的
是
的最大特征值对应的特征向量。
上面的推导特定于
的情况,仅有一个主成分。一般来说,矩阵
由
的前
个最大的特征值对应的特征向量组成(利用归纳法,将
表示为
的函数即可,需要两个辅助矩阵:单位对角矩阵
以及
,省去证明过程)。
参考
- 主成分分析
- CodingLabs - PCA的数学原理
- 《Deep Learning》 Ian Goodfellow et al.
