So in Matlab I perform PCA on handwritten digits. Essentially, I have say 30*30 dimensional pictures, i.e. 900 pixels, and I consider after PCA the components which capture most of the variance, say the first 80 principal components(PC) based on some threshold. Now these 80 PCs are also of 900 dimension, and when i plot these using imshow, I get some images, like something looking like a 0, 6, 3, 5 etc. What is the interpretation of these first few of the PCs (out of the 80 I extracted)?
2 回答
首先是命名法:PCA 找到数据协方差矩阵的特征向量,然后将数据转换为特征向量的基。此操作的结果有两部分:转换后的数据和用于转换的特征向量。通常它是第一个称为主成分 (PC)。第二种没有确定的名称,但我喜欢术语主体模式 (PM)。您的问题是关于 PM 的解释。
对 PM 的解释通常很难,如果不是不可能的话。当然,它们有一个简单的技术解释,PCA 在数据空间中寻找发生最大变化量的方向,而 PM 就是那些方向。对于第一个组件,这种最大化是免费的,并且捕获了发生变化的主要方向。后来的组件被限制为与之前的组件正交,这通常会导致越来越复杂的高频模式,这些模式越来越难以解释。
对于您的数据集,情况可能会有所不同,因为它可能在非常高维的空间中具有某种集群结构,其中集群对应于数字 0-9。已经观察到,在这种情况下,PCA 和 k-means 聚类之间存在弱对应,因此第一个 PM 倾向于恢复由聚类质心跨越的空间。在这种情况下,第一个 PM 将是集群质心模式的混合,甚至可能与这些模式大致重合。我想这就是解释你观察的原因。
响应 OP 评论的更多信息:
上面引用的 Wikipedia 片段是指 Ding and He (2004), K-means Clustering via Principal Component Analysis (link). 他们在摘要中写道:“在这里,我们证明主成分是 K 均值聚类的离散聚类成员指标的连续解。” 据我了解,这意味着“组件负载”,即给定数据点的主成分的值是或至少与该数据点是否属于集群的指标相关。他们继续说,“同样,我们表明,由簇质心跨越的子空间是由在 K - 1 项处截断的数据协方差矩阵的谱扩展给出的。” 这意味着由前 K – 1 个主要模式(特征向量)跨越的数据空间的子空间(在您的情况下为 900 维)是或接近于由簇质心(之间的差异)跨越的空间(每个数字的平均图像)。
可以这样想:PCA 允许通过从一组 10 个“典型”30x30 图像中重建所有 30x30 图像来将数据的 900 维减少到大约 10 维。这意味着,每个图像可以用 10 个数字而不是 900 个数字来近似编码。为了使这成为可能,“典型”图像必须类似于“0”、“1”等的平均外观。在最简单的情况下,这 10 张图像可能只是平均“0”、平均“1”等本身。通常情况并非如此,但可能大致如此。这有帮助吗?我认为“0”对应于最强的PC只是巧合。
PCA 从数据集中提取最重要的信息,并通过仅保留重要信息 - 主成分来压缩数据集的大小。
第一个主成分的构造方式使其具有最大可能的方差。第二个分量是在与第一个分量正交的约束下计算的,并且具有最大可能的方差。
在您的情况下,数据是一组图像。假设您有 1000 张图像并计算前五个主成分(5 张图像,由 PCA 算法构建)。您可以将任何图像表示为 900 个数据点(30x30 像素),或者将 5 个图像与相应的倍增系数组合起来。
PCA 算法的目标是构建这 5 个图像(主成分),使您的数据集中的图像通过给定数量的主成分的组合最准确地表示。
更新:
考虑下图(来自Kevin Murphy的惊人著作)。该图像显示了如何通过将二维点(红点)投影到向量(紫线)来在一维(绿色十字)中表示它们。向量是第一个主成分。PCA 的目的是构建这些向量以最小化重建误差。在您的情况下,这些向量可以表示为图像。
有关使用 PCA 进行手写数字识别的更多详细信息,您可以参考这篇文章。