理解主成分分析 (PCA)

SIGAI-AI学习交流群的目标是为学习者提供一个AI技术交流与分享的平台。

导言

主成分分析法 (PCA) 是一种常用的数据分析手段。对于一组不同维度 之间可能存在线性相关关系的数据,PCA 能够把这组数据通过正交变换变 成各个维度之间线性无关的数据。经过 PCA 处理的数据中的各个样本之间 的关系往往更直观,所以它是一种非常常用的数据分析和预处理工具。PCA处理之后的数据各个维度之间是线性无关的,通过剔除方差较小的那些维度上的数据我们可以达到数据降维的目的。在本文中,SIGAI将介绍PCA 的原理、应用以及缺陷。

为什么要有 PCA

如果数据之中的某些维度之间存在较强的线性相关关系,那么样本在这两个维度上提供的信息有就会一定的重复,所以我们希望数据各个维度之间是不相关的 (也就是正交的)。此外,出于降低处理数据的计算量或去除噪声等目的,我们也希望能够将数据集中一些不那么重要 (方差小) 的维度剔除掉。例如在下图中,数据在 x 轴和 y 轴两个维度上存在着明显的相关性,当我们知道数据的 x 值时也能大致确定 y 值的分布。但是如果我们不是探究数据的 x 坐标和 y 坐标之间的关系,那么数据的 x 值和 y 值提供的信息就有较大的重复。在绿色箭头标注的方向上数据的方差较大,而在蓝色箭头方向上数据的方差较小。这时候我们可以考虑利用蓝色和绿色的箭头表示的单位向量来作为新的基底,在新的坐标系中原来不同维度间线性相关的数据变成了线性不相关的。由于在蓝色箭头方向上数据的方差较小,在需要降低数据维度的时候我们可以将这一维度上的数据丢弃并且不会损失较多的信息。如果把丢弃这一维度之后的数据重新变化回原来的坐标系,得到的 数据与原来的数据之间的误差不大。这被称为重建误差最小化。PCA 就是 进行这种从原坐标系到新的坐标系的变换的。

图 1: 示意图

如何计算 PCA

数据经过 PCA 变换之后的各个维度被称为主成分,各个维度之间是线性无关的。为了使变换后的数据各个维度提供的信息量从大到小排列,变换后的数据的各个维度的方差也应该是从大到小排列的。数据经过 PCA 变换之后方差最大的那个维度被称为第一主成分。

我们先来考虑如何计算第一主成分。假设每一条原始数据是一个 m 维行向量,数据集中有 n 条数据。这样原始数据就可以看作一个 n 行 m 列的矩阵。我们将其称为 X,用x(i)代表数据集中的第 i 条数据(也就是 X 的第 i 和行向量)。这里为了方便起见,我们认为原始数据的各个维度的均值都是 0。当原始数据的一些维度的均值不为 0 时我们首先让这一维上的数据分别减去这一维的均值,这样各个维度的均值就都变成了 0。为了使 X 变化到另一个坐标系,我们需要让 X 乘以一个 m × m 的正交变换矩阵 W。W视为由列向量<w1,w2,...,wm>组成。我们让X和W进行矩阵相乘之后就可以原始数据变换到新的坐标系中。

为了使变换不改变数据的大小,我们让 W 中的每个列向量 wi 的长度都为1,也就是||wi|| = 1。T 中的各个列向量为 <t1, t2, ..., tm>。为了使第一主成分 (t1) 的方差最大,

上述最优化问题中w1的长度被限制为 1,为了求解w1,我们将其变成如下的形式:

因为当 C 是一个不为零的常数时,

这时候求解出的是 w1 的方向。我们只要在这个方向上长度取长度为 1 的向量就得到了结果。

是一个非常常见的瑞利熵,其更一般的形式是

这里的 M 是一个厄米特矩阵 (Hermitian Matrix),在本文中我们可以将其认为是一个实对称矩阵;x 是一个长度不为零的列向量。求解瑞利熵的最值需要对实对称矩阵的对角化有一定的了解。这里的XT X很显然是一个实对称矩阵。对一个实对称矩阵进行特征值分解,我们可以得到:

这里的 D 是一个对角矩阵,对角线上的元素是特征值;P =<p1, p2, ..., pn>,每个pi都是一个长度为 1 的特征向量,不同的特征向量之间正交。我们将特征值分解的结果带回瑞利熵中可以得到

这里的

。令

,这时有

。这样

就构成了一个一维凸包。根据凸包的性质我们可以知道,当最大的λi对应的αi = 1时整个式子有最大值。所以当 x 的为最大的特征值对应的特征向量时瑞利熵有最大值,这个最大值就是最大的特征值。根据这个结论我们就可以知道w1就是XT X的最大的特征值对应的特征向量,第一主成分t1 = Xw1。这样我们就得到了计算第一主成分的方法。接下来我们继续考虑如何计算其他的主成分。因为 W 是一个正交矩阵,所以

因为wk 和w1, w2, ..wk−1 正交,

为了使第 k 个主成分在与前 k - 1 个主成分线性无关的条件下的方差最大,那么wk应该是第 k 大的特征值对应的特征向量。经过这些分析我们就能发现变换矩阵 W 中的每个列向量就是XT X的各个特征向量按照特征值的大小从左到右排列得到的。

接下来我们对如何计算 PCA 做一个总结:

1. 把每一条数据当一个行向量,让数据集中的各个行向量堆叠成一个矩阵。

2.将数据集的每一个维度上的数据减去这个维度的均值,使数据集每个维度的均值都变成 0,得到矩阵 X。

3.计算方阵XT X的特征值和特征向量,将特征向量按照特征值由大到小的顺序从左到右组合成一个变化矩阵 W。为了降低数据维度,我们可以将特征值较小的特征向量丢弃。

4.计算 T = XW,这里的 T 就是经过 PCA 之后的数据矩阵。

除了这种方法之外,我们还可以使用奇异值分解的方法来对数据进行 PCA处理,这里不再详细介绍。

PCA 的应用

首先我们来看一下 PCA 在数据降维方面的应用。我们在 MNIST 数据集上进行了测试。我们对 MNIST 的测试集中的每一幅 28×28 的图片的变成一个 784 维的行向量,然后把各幅图片拼接成的行向量堆叠一个 784×10000的数据矩阵。对这个数据矩阵进行 PCA 处理。处理得到的特征值的分布如下图。

图 2: MNIST 数据集特征值的分布

通过图片我们可以看出前面一小部分的特征值比较大,后面的特征值都比较接近于零。接下来我们取前 200,300 个主成分对数据进行重建。我们发现使用前 200 个主成分重建的图像已经能够大致分辨出每个数字,使用前 300 个主成分重建的图像已经比较清晰。根据实验我们可以发现 PCA能够在丢失较少的信息的情况下对数据进行降维。

图 3: 原始图像

图 4: 使用前 200 个主成分重建的图像

图 5: 使用前 300 个主成分重建的图像

PCA 在自然语言处理方面也有比较多的应用,其中之一就是用来计算词向量。word2vec 是 Google 在 2013 年提出了一个自然语言处理工具包,其思想是用一个向量来表示单词,意思和词性相近的单词对应的向量之间的距离比较小,反之则单词之间的距离比较大。word2vec 原本是使用神经网络计算出来的,本文中的 PCA 也可以被用于计算词向量。具体的做法为:构建一个单词共生矩阵,然后对这个矩阵进行 PCA 降维,将降维得到的数据作为词向量。使用这种方法构造出的词向量在单独使用时效果虽然不如使用神经网络计算出的词向量,但是将神经网络构造出来的词向量和使用PCA 降维得到的词向量相加之后得到的词向量在表示词语意思时的效果要好于单独使用神经网络计算出来的词向量。

图 6: 一个共生矩阵的例子

图片来自于斯坦福大学公开课 cs224n 课件

PCA 的缺陷

虽然 PCA 是一种强大的数据分析工具,但是它也存在一定的缺陷。一方面,PCA 只能对数据进行线性变换,这对于一些线性不可分的数据是不利的。为了解决 PCA 只能进行线性变换的问题,Schölkopf, Bernhard 在 1998年提出了 Kernel PCA。Kernel PCA 在计算M = XT X的时候不是直接进行相乘,而是使

。这里的

是一个与支持向量机中类似的核函数。这样就能够对数据进行非线性变换。另一方面,PCA 的结果容易受到每一维数据的大小的影响,如果我们对每一维数据乘以一个不同的权重因子之后再进行 PCA 降维,得到的结果可能与直接进行 PCA 降维得到的结果相差比较大。对于这个问题,Leznik 等人在论文Estimating Invariant Principal Components Using Diagonal Regression 中给出了一种解决方案。除此之外,PCA 要求数据每一维的均值都是 0,在将原始数据的每一维的均值都变成 0 时可能会丢失掉一些信息。虽然 PCA有这些缺陷,但是如果合理的利用,PCA 仍然不失为一种优秀的数据分析和降维的手段。

参考文献

  1. Pearson, K.(1901). ”On Lines and Planes of Closest Fit to Systems of Points inSpace”.http://stat.smmu.edu.cn/history/pearson1901.pdf. Philosophical Magazine.2 (11):559–572.
  2. Principalcomponent analysis(主成分分析). https://en.wikipedia.org/wiki/Principal_component
  3. Rayleighquotient(瑞利熵). https://en.wikipedia.org/wiki/Rayleigh_quotient.Wikipedia.
  4. Hermitianmatrix(厄米特矩阵). https://en.wikipedia.org/wiki/Hermitian_matrix.Wikipedia.
  5. Yann LeCun.[MNIST 数据集] (http://yann.lecun.com/exdb/mnist/).
  6. Tomas Mikolov,Ilya Sutskever, Kai Chen, Greg Corrado, Je rey Dean.(2013)”DistributedRepresentations of Words and Phrases and theirCompositionality”.https://arxiv.org/pdf/1310.45 arxiv.org.
  7. Schölkopf,Bernhard (1998). ”Nonlinear Component Analysis as a Kernel Eigenvalue Problem”.Neural Computation. 10: 1299–1319. doi:10.1162/089976698300017467.
  8. Leznik, M;Tofallis, C. 2005 [uhra.herts.ac.uk/bitstream/handle/2299/715/S56.pdfEstimating Invariant Principal Components Using Diagonal Regression.]

本文分享自微信公众号 - SigAI(SIGAICN)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据派THU

下一代数据网加速器成立,致力于建设智能时代的大数据基础设施

6月20日,首届交叉智能前沿峰会在南京紫金山庄举行,峰会上姚期智院士重点发布了“下一代数据网加速器”,目标是“建数据驱动的网络核心技术和基础设施。” 6月21日...

17440
来自专栏钱塘大数据

以AI为杀手锏,东湖大数据进军商业气象市场

近日,东湖大数据对外发布了自主研发的“气象AI”。该产品通过大数据、云计算、深度学习、人工智能等技术,专注于提供1*1公里小场景专业化气象服务,标志着东湖大数据...

11830
来自专栏数据派THU

教你用Python解决非平衡数据问题(附代码)

本文为你分享数据挖掘中常见的非平衡数据的处理,内容涉及到非平衡数据的解决方案和原理,以及如何使用Python这个强大的工具实现平衡的转换。

13120
来自专栏数据派THU

TensorFlow教程:快速入门深度学习五步法(附Keras实例)

作为一个程序员,我们可以像学习编程一样学习深度学习模型开发。我们以 Keras 为例来说明。我们可以用 5 步 + 4 种基本元素 + 9 种基本层结构,这 5...

39730
来自专栏钱塘大数据

什么是区块链?唐·泰普斯科特TED演讲,看懂区块链最好的视频

2018年什么最火?人工智能还是机器人?细想一下,可能这两个都不是,最火的当属赚钱最火的币圈了。2017是比特币渐渐浮出水面的一年,当听闻贵圈有人动辄赚取上亿元...

36620
来自专栏数据派THU

机器学习Top10算法,教你选择最合适的那一个!

本文共3800字,建议阅读6分钟。 选什么算法?本文为你梳理TOP10机器学习算法特点。

13520
来自专栏数据派THU

精选10大机器学习开源项目 !(附链接)

本文推荐的10大机器学习开源项目是由Mybridge从250个机器学习开源项目中挑选出来的,Github平均star为1385,主题包含:Tensorflow,...

18790
来自专栏数据派THU

当AI黑科技撞上大数据日:清华大学第四届大数据日成功举办

春风送暖,万物芳华,清华大学迎来了她107岁生日;值此之际,清华-青岛数据科学研究院(以下简称“数据院”)在2018年4月26日C楼前广场举办了主题为——“AI...

12230
来自专栏钱塘大数据

【报告】领英发布:全球AI领域人才报告

《全球AI领域人才报告》。报告显示,作为当下热门的“投资风口”,AI领域其实早已拥有深厚的技术积淀,是一片拥有“高度文明的新大陆”——全球AI领域拥有十年以上从...

17840
来自专栏钱塘大数据

美媒评2018年全球十大突破性技术:AI和人工胚胎上榜

美国《麻省理工科技评论》本周刊文,列出了2018年的10大科技突破。今年入选的技术包括人工智能技术“生成对抗网络”(GAN)、人工胚胎,以及基于天然气的清洁能源...

10440

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励