1.PCA 的数学原理

主成分分析是研究如何把多个指标转化为少数几个综合指标的统计方法。

设随机向量 主成分分析 PCA 与奇异值分解 SVD - 图1 .当 主成分分析 PCA 与奇异值分解 SVD - 图2 个分量的大部分变差能由 主成分分析 PCA 与奇异值分解 SVD - 图3 个主成分概括时,可认为包含在这 主成分分析 PCA 与奇异值分解 SVD - 图4 个主成分内的信息与原始的 主成分分析 PCA 与奇异值分解 SVD - 图5 个变量大致一样多。此时可以用这 主成分分析 PCA 与奇异值分解 SVD - 图6 个主成分替代原来的 主成分分析 PCA 与奇异值分解 SVD - 图7 个变量,从而对高维的数据起到降维的效果。

设总体 主成分分析 PCA 与奇异值分解 SVD - 图8 的协方差矩阵为 主成分分析 PCA 与奇异值分解 SVD - 图9,考虑以下线性组合

  1. ![](https://cdn.nlark.com/yuque/__latex/ce2eac1234c76f1ab5a9889b651eb8ff.svg#card=math&code=%5Ccdots%5Ccdots&id=PTPhq)<br />![](https://cdn.nlark.com/yuque/__latex/8b6d29785233c47566ffdab8ed240b73.svg#card=math&code=Y_d%3Dl_d%5ETX%3Dl_%7Bd1%7DX_1%2Bl_%7Bd2%7DX_2%2B%5Ccdots%2Bl_%7Bdd%7DX_d%2C&id=bVsPc)

主成分分析 PCA 与奇异值分解 SVD - 图10 主成分分析 PCA 与奇异值分解 SVD - 图11 主成分分析 PCA 与奇异值分解 SVD - 图12
注:方差也可用主成分分析 PCA 与奇异值分解 SVD - 图13表示,它是 Variance 的缩写

主成分即为总体 主成分分析 PCA 与奇异值分解 SVD - 图14 分量的线性组合主成分分析 PCA 与奇异值分解 SVD - 图15,我们要求方差 主成分分析 PCA 与奇异值分解 SVD - 图16 尽可能大(表示数据在第 主成分分析 PCA 与奇异值分解 SVD - 图17 个主成分上的离散程度尽可能大,并且 主成分分析 PCA 与奇异值分解 SVD - 图18 互不相关(意味着每一个主成分与它之前所有的主成分的构成的协方差值均为 0

当我们需要找到方差的最大值时,我们发现,如果不限制系数向量 主成分分析 PCA 与奇异值分解 SVD - 图19 的取值,方差的大小会受到它取值的影响。因此我们规定系数向量 主成分分析 PCA 与奇异值分解 SVD - 图20 为单位向量,即 主成分分析 PCA 与奇异值分解 SVD - 图21

之后我们求单位向量 ,使得 达到最大,此时称 主成分分析 PCA 与奇异值分解 SVD - 图22 为第一主成分;
再求单位向量 主成分分析 PCA 与奇异值分解 SVD - 图23 ,使得 主成分分析 PCA 与奇异值分解 SVD - 图24 达到最大的同时,主成分分析 PCA 与奇异值分解 SVD - 图25 ,此时称 主成分分析 PCA 与奇异值分解 SVD - 图26 为第二主成分;
如此循环继续下去,我们就找到了 主成分分析 PCA 与奇异值分解 SVD - 图27 个主成分。

一般地,若单位向量 主成分分析 PCA 与奇异值分解 SVD - 图28 满足约束条件 主成分分析 PCA 与奇异值分解 SVD - 图29 主成分分析 PCA 与奇异值分解 SVD - 图30 主成分分析 PCA 与奇异值分解 SVD - 图31
且使 主成分分析 PCA 与奇异值分解 SVD - 图32达到最大,则称 主成分分析 PCA 与奇异值分解 SVD - 图33 为随机向量 主成分分析 PCA 与奇异值分解 SVD - 图34 的第 主成分分析 PCA 与奇异值分解 SVD - 图35 主成分。

引理1.1主成分分析 PCA 与奇异值分解 SVD - 图36主成分分析 PCA 与奇异值分解 SVD - 图37 的特征值,则
主成分分析 PCA 与奇异值分解 SVD - 图38主成分分析 PCA 与奇异值分解 SVD - 图39
注:这里的 主成分分析 PCA 与奇异值分解 SVD - 图40 跟上文中的总体 主成分分析 PCA 与奇异值分解 SVD - 图41 的含义不同,这里的 主成分分析 PCA 与奇异值分解 SVD - 图42 指的是任意一个单位向量。

引理1.1可以通过矩阵的对角化进行证明,由于协方差矩阵 主成分分析 PCA 与奇异值分解 SVD - 图43对称半正定矩阵,因此对角化之后具有很多良好的性质,便于我们进行证明和计算,

定理1.1主成分分析 PCA 与奇异值分解 SVD - 图44主成分分析 PCA 与奇异值分解 SVD - 图45 的特征值,主成分分析 PCA 与奇异值分解 SVD - 图46为对应的单位正交特征向量,则第 主成分分析 PCA 与奇异值分解 SVD - 图47 个主成分为 主成分分析 PCA 与奇异值分解 SVD - 图48
且有 主成分分析 PCA 与奇异值分解 SVD - 图49

定理1.2 设定理1.1的条件成立,记 主成分分析 PCA 与奇异值分解 SVD - 图50.则主成分分析 PCA 与奇异值分解 SVD - 图51

定义1.1主成分分析 PCA 与奇异值分解 SVD - 图52 为第 主成分分析 PCA 与奇异值分解 SVD - 图53 个主成分 主成分分析 PCA 与奇异值分解 SVD - 图54方差贡献率,称 主成分分析 PCA 与奇异值分解 SVD - 图55 为主成分 主成分分析 PCA 与奇异值分解 SVD - 图56累计贡献率.

累积贡献率表明前 主成分分析 PCA 与奇异值分解 SVD - 图57 个主成分的方差和占总方差的比例。它用于表示对数据进行降维的过程中,保留的主成分所包含的信息量。为了避免损失过多的信息,我们一般使前 主成分分析 PCA 与奇异值分解 SVD - 图58 个主成分的累计贡献率达到80%以上。

定理1.3 设定理1.1的条件成立,记 主成分分析 PCA 与奇异值分解 SVD - 图59.则 主成分分析 PCA 与奇异值分解 SVD - 图60主成分分析 PCA 与奇异值分解 SVD - 图61%22%20aria-hidden%3D%22true%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-58%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E#card=math&code=X&id=IKmO6) 的第 主成分分析 PCA 与奇异值分解 SVD - 图62 个分变量 主成分分析 PCA 与奇异值分解 SVD - 图63 的相关系数为
主成分分析 PCA 与奇异值分解 SVD - 图64
系数向量 主成分分析 PCA 与奇异值分解 SVD - 图65 的第 主成分分析 PCA 与奇异值分解 SVD - 图66 个分量为 主成分分析 PCA 与奇异值分解 SVD - 图67,它刻画了 主成分分析 PCA 与奇异值分解 SVD - 图68 的第 主成分分析 PCA 与奇异值分解 SVD - 图69 个分量 主成分分析 PCA 与奇异值分解 SVD - 图70 对第 主成分分析 PCA 与奇异值分解 SVD - 图71 个主成分的影响程度。

2.PCA 的算法步骤

我们首先假设有 主成分分析 PCA 与奇异值分解 SVD - 图72主成分分析 PCA 与奇异值分解 SVD - 图73 维数据。

  1. 将原始数据按列组成 主成分分析 PCA 与奇异值分解 SVD - 图74主成分分析 PCA 与奇异值分解 SVD - 图75 列矩阵 主成分分析 PCA 与奇异值分解 SVD - 图76
  2. 主成分分析 PCA 与奇异值分解 SVD - 图77 的每一行中心化,即矩阵中的每个元素减去其所在行的期望(均值);
  3. 求出协方差矩阵 主成分分析 PCA 与奇异值分解 SVD - 图78;(大部分的算法会使用主成分分析 PCA 与奇异值分解 SVD - 图79作为系数,这在 主成分分析 PCA 与奇异值分解 SVD - 图80(数据样本)充分大的情况下也是可以的,但是我们要考虑到主成分分析 PCA 与奇异值分解 SVD - 图81才是对协方差的无偏估计,所以我们应该使用前者)
  4. 求出协方差矩阵的特征值及对应的单位正交特征向量(这个在线代里面应该是讲烂了的题型了,我想你们应该比我更清楚这个流程)
  5. 将特征向量按对应特征值大小排成矩阵主成分分析 PCA 与奇异值分解 SVD - 图82,取矩阵的前 主成分分析 PCA 与奇异值分解 SVD - 图83 列构成主成分分析 PCA 与奇异值分解 SVD - 图84
  6. 主成分分析 PCA 与奇异值分解 SVD - 图85即为原数据降至 主成分分析 PCA 与奇异值分解 SVD - 图86 维之后的数据(通过相关系数你可以拿到原来每个维度的数据对现在某个主成分的影响程度)

3.SVD 的算法步骤

SVD 也是对矩阵进行分解,但是和特征分解不同,SVD 并不要求要分解的矩阵为方阵。假设我们的矩阵 主成分分析 PCA 与奇异值分解 SVD - 图87 是一个 主成分分析 PCA 与奇异值分解 SVD - 图88 的矩阵,那么我们定义矩阵 主成分分析 PCA 与奇异值分解 SVD - 图89 的 SVD 为:主成分分析 PCA 与奇异值分解 SVD - 图90

主成分分析 PCA 与奇异值分解 SVD - 图91
其中 主成分分析 PCA 与奇异值分解 SVD - 图92主成分分析 PCA 与奇异值分解 SVD - 图93 都是酉矩阵(酉矩阵:它的共轭转置矩阵与它本身的乘积是单位阵)

之后我们介绍以下如何求出 SVD 分解后的 主成分分析 PCA 与奇异值分解 SVD - 图94 这三个矩阵

主成分分析 PCA 与奇异值分解 SVD - 图95 级方阵 主成分分析 PCA 与奇异值分解 SVD - 图96 进行特征分解,得到的特征值和特征向量满足:

主成分分析 PCA 与奇异值分解 SVD - 图97 个特征向量张成一个 主成分分析 PCA 与奇异值分解 SVD - 图98 级方阵 主成分分析 PCA 与奇异值分解 SVD - 图99 ,就得到了 SVD 公式中的 主成分分析 PCA 与奇异值分解 SVD - 图100 矩阵,一般我们称 主成分分析 PCA 与奇异值分解 SVD - 图101 中的每个特征向量为 主成分分析 PCA 与奇异值分解 SVD - 图102 的右奇异向量。

主成分分析 PCA 与奇异值分解 SVD - 图103 级方阵主成分分析 PCA 与奇异值分解 SVD - 图104进行特征分解,得到的特征值和特征向量满足:

主成分分析 PCA 与奇异值分解 SVD - 图105 个特征向量张成一个 主成分分析 PCA 与奇异值分解 SVD - 图106 级方阵 主成分分析 PCA 与奇异值分解 SVD - 图107,就得到了 SVD 公式中的 主成分分析 PCA 与奇异值分解 SVD - 图108 矩阵,一般我们称 主成分分析 PCA 与奇异值分解 SVD - 图109 中的每个特征向量为 主成分分析 PCA 与奇异值分解 SVD - 图110 的左奇异向量。

现在我们已经求出了 主成分分析 PCA 与奇异值分解 SVD - 图111主成分分析 PCA 与奇异值分解 SVD - 图112 ,只剩下奇异值矩阵 主成分分析 PCA 与奇异值分解 SVD - 图113 了。由于 主成分分析 PCA 与奇异值分解 SVD - 图114 除了主对角线上是奇异值其他位置都是0,所以我们只需要求出每个奇异值 主成分分析 PCA 与奇异值分解 SVD - 图115 就可以了。

主成分分析 PCA 与奇异值分解 SVD - 图116

这样我们就可以通过之前求出的右奇异向量和左奇异向量求出每个奇异值,进而求出奇异值矩阵 主成分分析 PCA 与奇异值分解 SVD - 图117

4. SVD 的一些性质

奇异值在奇异值矩阵中是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的 主成分分析 PCA 与奇异值分解 SVD - 图118 个的奇异值和对应的左右奇异向量来近似描述矩阵,即主成分分析 PCA 与奇异值分解 SVD - 图119

这也就是说,我们可以三个小矩阵来表示一个大的矩阵,如下图所示:
主成分分析 PCA 与奇异值分解 SVD - 图120

由于这个重要的性质,SVD 可以用于 PCA 降维,来做数据压缩和去除噪声。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于 NLP 中的算法,比如潜在语义索引.

5. SVD 用于 PCA

在刚才讲的主成分分析中,我们说如果要用 PCA 降维,就需要找到样本的协方差矩阵的最大的主成分分析 PCA 与奇异值分解 SVD - 图121 个特征向量,然后用这些特征向量张成的矩阵来做低维投影降维。但是当样本数多并且样本特征也多的时候,这个计算量是非常大的。

为了降低计算量,我们可以通过 SVD 来找到这个特征向量张成的矩阵。通过某些 SVD 的实现算法,我们可以不先求出协方差矩阵,也能求出右奇异矩阵 主成分分析 PCA 与奇异值分解 SVD - 图122。事实上,sklearn 中的 PCA 降维内部实现的真正原理就是通过 SVD 寻找特征向量矩阵,而不是用我们一开始介绍的暴力特征分解。