解释前几个用于手写数字识别的PCA组件

时间:2015-04-18 09:59:51

标签: matlab machine-learning pattern-recognition principal-components

所以在Matlab中我用手写数字执行PCA。基本上,我说30 * 30维图片,即900像素,我认为在PCA之后捕获大部分方差的组件,比如基于某个阈值的前80个主要组件(PC)。现在这些80个PC也是900维度,当我使用imshow绘制这些时,我会得到一些图像,比如看起来像0,6,3,5等等。这些前几个PC的解释是什么?我提取的80个?)

2 个答案:

答案 0 :(得分:7)

首先是一些命名法:PCA找到数据协方差矩阵的特征向量,然后将数据转换为特征向量的基础。该操作的结果有两部分:变换后的数据和用于变换的特征向量。通常它是第一个被称为主要组件(PC)的。第二个没有确定的名称,但我喜欢主要模式(PM)这个术语。你的问题是关于PM的解释。

PM的解释通常很难,如果不是不可能的话。当然,他们有一个简单的技术解释,PCA在数据空间中寻找方向,沿着这些方向发生最大量的变化,PM是那些方向。对于第一个组件,此最大化是免费的,并捕获发生变化的主要方向。后来的组件被约束为与之前的组件正交,这常常导致越来越复杂的高频模式,这些模式越来越难以解释。

对于您的数据集,情况可能不同,因为它可能在非常高维空间中具有某种类型的集群结构,其中集群对应于数字0-9。它具有been observed,在这种情况下,PCA和k均值聚类之间存在弱对应关系,使得第一PM倾向于恢复由聚类质心跨越的空间。在这种情况下,第一个PM将是簇质心图案的混合,甚至可能与这些图案大致重合。我认为这就是解释你观察的原因。


回应OP的意见的更多信息:

上面引用的Wikipedia片段是指Ding和He(2004), K-means通过主成分分析进行聚类 (link)。他们在摘要中写道:“在这里,我们证明了主成分是K均值聚类的离散聚类成员指标的连续解。”据我所知,这意味着“组件负载”,给定数据点的主要组件的值是或者至少与该数据点是否属于集群的指示符有关。他们继续说,“等价地说,我们证明了聚类质心跨越的子空间是由K-1项截断的数据协方差矩阵的谱扩展给出的。”这意味着由第一个K-1主模式(特征向量)跨越的数据空间(在您的情况下为900维)的子空间是或接近于由集群质心(之间的差异)跨越的空间(每个数字的平均图像)。如果是这种情况,大多数群集间差异都会由第一个主要成分捕获。

以这种方式思考:PCA允许通过从一组10“典型”30x30图像重建所有30x30图像,将数据的900维度减少到大约10维。这意味着,每个图像可以近似编码10个数字而不是900个数字。为了使其成为可能,“典型”图像必须类似于“0”,“1”等平均看起来如何。在最简单的情况下,10个图像可能只是平均“0”,平均“1”等本身。通常情况并非如此,但情况大致如此。这有帮助吗? “0”对应最强的PC只是巧合我想。

答案 1 :(得分:5)

PCA从数据集中提取最重要的信息,并通过仅保留重要信息(主要组件)来压缩数据集的大小。

第一个主成分的构造方式使其具有尽可能大的方差。第二个分量是在与第一个分量正交的约束下计算的,并且具有最大可能的方差。

在您的情况下,数据是一组图像。假设您有1000张图像,并计算前五个主要成分(5张图像,由PCA算法构建)。您可以将任何图像表示为900个数据点(30x30像素),或者将5个图像与相应的缩放系数组合。

PCA算法的目标是构建这5个图像(主要成分),使得数据集中的图像能够通过给定数量的主成分的组合最准确地表示。

<强>更新

考虑下面的图片(来自Kevin Murphy的惊人书籍)。该图像显示了通过将它们投影到矢量(紫色线),如何在1维(绿色十字)中表示2维(红点)中的点。向量是第一个主要组成部分。 PCA的目的是构建这些向量以最小化重建误差。在您的情况下,这些向量可以表示为图像。

enter image description here

有关使用PCA进行手写数字识别的详细信息,请参阅this文章。