文章翻译自Jonathon Shlens的google research,名为A Tutorial on Principal Component Analysis。
首先,说说我怎么看到这个文章的。我最近在读一篇关于主动路噪控制的论文的时候遇到一个疑问。首先需要采集车内噪声(输出)和底盘的18个振动信号(输入),为了实现降低车内噪声的目的,需要振动信号和车内噪声具有较好的相干函数;另外,18个信号并非全部用得上,假设,我们只需要4个,那就需要找到4个与输出最相干的输入来。于是文章是这样操作的
- 求18个振动信号的偏向干函数;
- 求偏相干函数矩阵的去均值的协方差;
- 求协方差的特征值,和特征向量;
- 将偏相干函数矩阵与特征向量矩阵相乘,文中将结果称之为投影;
- 将投影后的结果每一个元素取平方,再乘以协方差特征值的倒数。
得到18个输入信号相对于输出的贡献,将其从大到小排序,排序前4的即为与输出最相干的4个输入了。
我的疑问是,为什么前四步操作的结果是输入的投影?于是我在知乎看到了一个类似的提问:主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?
答案看的似懂非懂。这位答主 @董理 在回答中建议去看上面那篇google research。于是我下载下来看完了。这篇文章确实写得比较通俗易懂。我把它翻译出来,一方面是方便以后反复理解,一方面是给希望了解PCA的同学节约一点时间,省的去看英文了。文中有类似序言的introduction,没什么干货,我会酌情删除。最后,文中如有错误,还请谅解。
主成分分析教程
1. 引言
主成分分析(PCA)是一个现代数据分析工具,广泛应用于从神经科学到计算机图形学的各个领域,它是一种从混杂的数据中提取相关信息的简单的、非参数化方法。PCA为如何简单有效的将复杂的数据集降维,以揭示其背后隐藏信息的方法。
我们将从一个简单的例子开始,对PCA的目的做一个直观的说明。进而,我们将在线性代数框架内提供明确的解决方法。我们将看到PCA如何,以及为什么与奇异值分解(SVD)紧密相关。最后希望PCA的透彻理解能对你的领域有所帮助。
作者对读者唯一的要求就是:对线性代数有一定的了解。
2. 动机:一个玩具的例子
现在假设我们是一个试验员,我们正在尝试测量系统的各种数据,比如频谱、电压、速度等,用来解释某种现象。但是我们搞不清楚发生了啥,因为数据看起来难以理解、不清晰,甚至冗余。这种不是一个小问题,它是实验科学的基本障碍。神经科学、网络索引、气象学和海洋学等复杂系统中的例子有很多,因为基本的关系通常很简单,因此测量变量的数量可能过于庞大,有时甚至有误导性。
以物理学中一个简单的问题为例,如 FIG.1所示。假设我们要研究一个理想弹簧的运动。该系统由一个质量为
现在,假设我们并不了解其中的原理,我们不知道哪个轴的方向,维度是测量的重点,更不用说做多少个轴向,多少个维度的测量了。因此我们决定在三维空间中测试小球的位置(因为我们生活在三维的世界中)。具体来说,我们围绕系统布置三个摄像机。摄像机以
FIG.1 使用三个摄像机记录小球的动态。每个摄像机记录的点云图如下图所示。
如果有先验知识的话,我们知道,只要用一个摄像头采集小球沿着x轴的运动轨迹即可。但是这在现实世界中通常不会发生。我们通常不知道哪一个测试结果可以最好的反应我们所讨论的系统的运动过程。此外,有时我们采集的数据量会超过实际需要。
此外,我们还要考虑噪声干扰的影响。在这个小球的例子中,干扰因素有空气,不完美的摄像机,或者弹簧的摩擦,它们都会产生噪声。而这个例子中的问题是试验者每天都要面临的。请将这个例子记在脑中,后面讨论中我们会用到。希望在本文的结尾,我们可以对如何使用主成分分析提取
3. 框架:基变换
PCA的目标是确定表达数据集的最有意义的基。它可以滤除噪声,揭示系统的本质。在小球的例子中,PCA的目标是确定的:“小球的沿着
3.1 基础坐标系
在更精确地定义我们目标的同时,我们也需要对我们的数据进行更精确的定义。我们将每个时刻的样本(或试验结果)都是为数据集的单个样本。每次采样时,我们都会记录一组由多个传感器(在这个例子中,是摄像头)测量的数据,例如电压,位置等。在我们的数据集中,摄像机
其中:
通过这个具体的例子,我们对问题重新进行抽象化的描述。每个样本都是一个
这个问题通常是一个会被忽略的默认假设。假设,我们已经得到了摄像机采集的数据,我们先只看摄像机A,
我们在线性代数中如何表达naive basis呢?在二维的情况下,
3.2 基变换
有了以上基础,我们可以更清楚的表述PCA的要求:是否存在另一组基,它是初始基(original basis)的线性组合,但它可以更好的表达我们的数据集。
细心的读者可能发现一个反复出现的词:线性。确实,PCA提出一个严格但有力的假设:线性。线性通过限制潜在基(potential basis)的集合,极大简化了问题。通过这种假设,PCA仅限于将数据集重新表达为其基向量的线性组合。
设初始数据集为
我们定义以下量[1]:
[1]本节中,
·
·
·
等式
1.
2. 几何上,
3.
第三种解释可能看起来并不明显,我们用向量点积的形式表达
我们可以看到
我们发现
3.3 剩下的问题
通过线性假设,问题转换为寻找合适的基变换。在这个变换中,正交基
· 重新表达
· 如何选择合适的
在回答上面两个问题之前,我们先要问自己:我们想让
4 方差和目的
现在最重要的问题是:“最好的表达数据”的含义是什么呢?本节将针对此问题建立一个直观的解答,并遵循额外的假设。
4.1 噪声和旋转
任何数据集中的测量噪声必须很低,否则,无论采用何种分析技术,都无法提取到与信号相关的信息。虽然没有绝对的衡量噪声的标准,但我们可以将噪声相对于信号的强度进行量化。常用的度量方式是信噪比(SNR),或方差比:
较高的信噪(
FIG.2 摄像机A的仿真数据
我们来仔细观察FIG.2中的数据。弹簧沿直线运动,因此每一个摄像机也应该记录直线运动。因此,任何偏离直线的点都是噪声。图中两条线表示由于信号和噪声引起的差异。二者长度的比值可以衡量点云图有“多么瘦”:一条细线(
通过合理的测量,定量的,我们假设在测量空间中,拥有最大方差的方向包含了我们感兴趣的小球动态。在FIG.2中,所有最大方差的方向并不是
因此,通过假设,我们感兴趣的动态存在于方差最大,并且可能也是信噪比最高的方向。
以上的假设告诉我们,我们要找的基不是naive basis,因为这些方向(即
4.2 冗余
FIG.2暗示了数据中的另一个混杂因素——冗余。这个问题在弹簧小球的例子中特别明显,多个传感器记录了相同的动态信息。再看FIG.2,思考一下,是否确实有必要记录2个变量。如FIG.3所示,表示两个任意测量类型
· 这是一个关于
· 这是一个关于
显然,对于FIG.3右图的情况,只记录一个变量就够了。为什么呢?因为我们可以通过最佳拟合线,用
FIG.3 来自两个单独的测量
4.3 协方差矩阵
两个变量的情况下,通过找到最佳拟合线的斜率并判断拟合的质量,可以很容易的确定冗余信息。我们如何将这一概念量化,并推广到更高维呢?我们来考虑两个零均值的测量结果:
协方差衡量了个两个变量间的线性相关的程度。较大的正值意味着正相关,较大的负值意味着负相关。协方差的绝对值反应了冗余度。协方差有如下性质:
·
· 若
我们把
用向量点积的形式表示协方差[2]:
[2]:实际上协方差矩阵应该是
最后我们可以将两个变量的情况推广到任意个变量。分别将
·
·
·
· 主对角元的值大,说明测量到感兴趣的动态
· 非对角元的绝对值大,说明测量冗余度大
假如我么可以任意改变
4.4 协方差矩阵的对角化
最后两节我们要实现以下目标:(1)用协方差衡量冗余,将其最小化;(2)用方差衡量有用信号,将其最大化。那最优的协方差矩阵
·
·
对角化
我们来看PCA是如何操作的。FIG.2的例子中,
1. 在
2. 找到另一个方差最大的方向,但由于正交这一约束条件,应将搜索结果限制在与之前选择的方向正交的所有方向上
3. 重复上述步骤,知道选择了
所得的
原则上,这个简单的算法可以实现PCA,但这正是正交假设正确的真正原因。该假设的真正益处是对这一问题存在有效,分析性的解决方案。我们将在后面的小节讨论两种算法。
注意,我们规定按顺序排列方差的意义何在?我们有了一种方法,可以判断主要方向的重要性。也就是说,通过方差对每个基向量
4.5 关于假设的总结
本节将对PCA背后的假设进行总结,并指出何时这些假设并不容易满足
Ⅰ. 线性假设:线性假设将问题归结为基变换。一些研究领域探索了如何将这一概念扩展 到非线性领域(见讨论)。
Ⅱ. 方差大意味“重要”:该假设有一个重要的前提,数据必须具有高
Ⅲ. 主成分正交:该假设直观地简化了PCA,通过线性代数分解技术即可实现。以下两部分重点介绍了这些技术。
我们讨论了推导PCA所需的所有概念,剩下的就是线性代数的问题了。第一个方法很简单,而第二种则设计一个很重要的代数分解。
5. PCA的特征向量分解算法
借助特征向量的重要性质,我们导出PCA的第一个算法。还是以数据集
我们先根据未知变量重写
其中
线性代数告诉我们,对于一个对称矩阵
[3]: 矩阵
于是,我们找到了使
·
·
实际上,计算
(到这里,应该可以理解为什么高阶矩阵乘以其去均值的协方差矩阵的特征向量矩阵就是投影了)
6. 使用奇异值的更一般的解决方法
本节是涉及数学最多的章节,跳过并不会影响阅读后面的内容。这一部分的内容仅出于内容的完成性而存在。我们推导PCA的另一个代数解,在过程中,我们发现PCA与奇异值分解(SVD)关系密切。实际上,有时二者名称还可以互换使用。我们将看到SVD是理解基变换的更通用的方法。
我们直接给出推导公式。在后面的章节中,我们解释了奇异值分解的意义,并得到的结果与PCA关联。
6.1 SVD
设
[4] 本节的矩阵是
·
·
·
·
·
我们现在有了实现SVD的所有部分,SVD的标量形式只是对第三个定义的改写:
我们可以按照FIG.4中的规则,将SVD写成矩阵相乘的形式,先定义一个对角矩阵
其中:
我们在
其中
等式(4)说明,任意矩阵
6.2 解释SVD
SVD的最终形式简洁明了。我们将等式(3)重写:
其中
FIG.4 从标量形式的SVD构建矩阵形式的SVD
我们将等式(4)改写,使这个模糊的假设更加明确:
我们定义
SVD有对称性,因此我们可以定义一个相似的量:行空间。
我们定义
6.3 SVD&PCA
很明显,PCA和SVD密切相关。让我们回到最初
其中,
这是什么意思呢?
[5]
[6] 如果最终目的是找到
7. 讨论
PCA具有广泛的应用前景,因为它可以使用线性代数的分析方法解释复杂数据集中的简单底层结构。FIG.5对如何实现PCA做了简要总结。
FIG.5 实现PCA的步骤
PCA的主要好处是可以量化每一个描述数据集变化倾向的维度的重要性。对比沿每一个主成分的方差提供了一种比较维度之间重要性的方法。采用这种方法背后的隐藏希望是,沿着少量主成分的方差(即少于测量类型的数量)也能表达完整数据集的合理特征。这就是降维。在小球的例子中,PCA识别出,小球位置的变化大部分是一维的( 运动方向
尽管PCA在许多现实问题上都是“可行的”,但我们需要知道,PCA何时会失效?在回答这个问题之前,让我们注意该算法的显着特征。PCA完全是非参数的:可以插入任何数据集并给出结果,无需调整任何参数,也无需考虑数据的记录方式。从一个角度来看,PCA是非参数的(即插即用)这一事实可以被认为是一个比较好的特性,因为答案是唯一的,与使用者无关。从另一个角度来看,PCA不了解数据源这一事实也是一个弱点。例如,在FIG.6中追踪摩天轮上的人的轨迹。数据点可以用单个变量(摩天轮的转角
FIG.6 PCA失败案例(红线)。(a)追踪摩天轮上人的轨迹(黑点)。所有动态可以摩天轮转角
7.1 降维的限制和统计
要想对PCA的限制有更如的了解,则需要对基本假设进行思考,同时需要对数据源进行严格的描述。一般而言,此方法背后的主要动机是对数据集进行解相关,即消除二阶相关性。实现这一目标的方式大致类似于人们在美国西部探索城镇的方式:沿着贯穿城镇的最长道路行驶。人们看到另一条大路,向左或向右转,然后沿着这条路行驶,以此类推。PCA要求探索的每条新道路都必须与先前的道路垂直,但显然,此要求过于严格,并且数据(或城镇)可能沿非正交轴排列,例如FIG.6b。FIG.6给出了此类数据的两个示例,其中PCA提供的结果并不令人满意。
为了解决这些问题,我们必须定义我们认为最佳的结果。在降维的情况下,成功的一种度量是降维后结果可以预测原始数据的程度。用统计术语,我们必须定义一个误差函数(或损失函数)。可以证明,在常见的损失函数均方误差(即
解决这一矛盾的方法在于我们选择分析的目标。分析的目的是对数据进行解相关,或者换句话说,目标是消除数据中的二阶相关。在FIG.6的数据集中,变量之间存在更高阶的依存关系。因此,去除二阶依赖关系不足以揭示数据中的所有结构[7]。
[7] 什么时候二阶相关足以显示数据集中的所有依存关系?当一阶和二阶统计量是数据的sufficient statistics 统计量时,例如,当数据集是高斯分布时。
消除高阶相关性的解决方案有多种。例如,如果已知关于该问题的先验信息,则可以将非线性(即核)应用于数据,以将数据转换为更适当的naive basis。例如,在FIG.6a中,可以采用数据的极坐标表示。这种方法通常被称为核PCA。
另一个方法是在数据集内,施加更一般的统计依存关系定义,例如要求降维的数据在统计上是独立的。这类算法,称为独立成分分析(ICA),已在PCA失败的许多领域获得成功。ICA已应用于信号和图像处理的许多领域,但该方法(有时)存在难以计算的问题。
对我来说,写这篇论文是非常有指导意义的经历。我希望本文有助于揭开PCA的目的和结果,以及这一重要分析技术背后的基本假设的神秘面纱。如果这对您有用,请给我一个回复,因为它会激励我继续写作!
作者Email地址: jonathon.shlens@gmail.com
写在最后的废话:翻译这篇文章以后,感觉对PCA的理解和记忆更加深刻了。就是有点费时间,打公式太慢了,断断续续的用了16个小时。翻译的过程中,有些名词,我用专业词典也翻译不出来,就自己想当然的翻译了。如果在阅读的过程中发现任何问题,请告诉我,我会修正,避免误导他人。