当维数大于观测次数时,PCA是否仍通过协方差矩阵的特征分解完成?


10

我有一个矩阵,在D = 100维空间中包含我的N = 20个样本。现在,我希望在Matlab中编写自己的主成分分析(PCA)。我首先将X贬为X_0X N = 20 D = 100 X X 020×100XN=20D=100XX0

我从某人的代码中了解到,在这种情况下,我们的维数比观测值大,我们不再对X0的协方差矩阵进行特征分解。取而代之的是,我们对\ frac {1} {N-1} X_0X_0 ^ T进行特征分解1N1X0X0T。为什么正确?

正常协方差矩阵的大小为D×D,其中每个元素告诉我们二维之间的协方差。对我来说,1N1X0X0T甚至尺寸都不正确!它是N \ x Nñ×ñ矩阵,那么它将告诉我们什么?两个观察值之间的协方差?


您的问题的答案是在以下情况下-正如您提出任务时所得出的那样-您本身不需要列的协方差矩阵。您只希望将其作为获取PC的途径。对?但是,同样的PCA的结果可以通过本征来获得X'XXX'(以及SVD的XX')。在一种情况下所谓的“负载”在另一种情况下称为“ pc分数”,反之亦然。因为这两个都是坐标(例如参见)和轴,所以“主要尺寸”是相同的。
ttnphns 2015年

1
(续)如果是这样,则可以自由选择要分解的对象-明智的做法是分解可以更快/更有效地进行分解的对象。当n<p它需要较少的内存和更少的时间来分解XX',因为它是更小的尺寸。
ttnphns 2015年

@ttnphns很棒的解释。我现在明白了。但是,从特征XX'到PC 仍然存在问题。您能简短地告诉我如何吗?鉴于PC只是协方差矩阵的特征向量,我试图从XX'协方差矩阵的本征向本征特征移动X'X,但是失败了。
Sibbs赌博2015年

1
我得走了。也许@amoeba(在代数方面比我敏捷得多)或其他读者很快就会来这里帮助您。干杯。
ttnphns

1
@ttnphns:完成了:)
amoeba

Answers:


22

协方差矩阵的大小为,由C = 1d×d

C=1个ñ-1个X0X0

您所讨论的矩阵当然不是协方差矩阵;它称为Gram矩阵,大小为 x:G = 1ñ×ñ

G=1个ñ-1个X0X0

主成分分析(PCA)可以通过对这两个矩阵进行特征分解来实现。这些只是计算同一事物的两种不同方法。

最简单,最有用的方法是使用数据矩阵的奇异值分解。将其插入和的表达式中,我们得到:Ç ģ ÇX=ü小号VCG

C=V小号2ñ-1个VG=ü小号2ñ-1个ü

协方差矩阵的特征向量是主方向。这些特征向量上的数据投影是主要成分。这些预测由。缩放到单位长度的主成分由给出。如您所见,Gram矩阵的特征向量正是这些可缩放的主成分。和的特征值一致。Vü小号üCG

如果可能会建议使用Gram矩阵的原因是,与协方差矩阵相比,它的大小较小,因此计算速度更快,特征分解速度更快。实际上,如果维数太高,则甚至无法将协方差矩阵存储在内存中,因此对Gram矩阵进行操作是进行PCA的唯一方法。但是对于可管理的,即使您愿意,即使您仍然可以使用协方差矩阵的特征分解。ñ<dddñ<d



1
好答案!我不知道它的名字!非常感谢!我现在有信心使用它来加快计算速度。
Sibbs赌博

3
我的答案假设您想要得到的是,也许还就是。如果您还想获得,则可以在获得之后通过对其进行计算。事实上,如果你的维数太高,没有办法,你甚至可以存储在内存中的协方差矩阵,所以对革兰氏矩阵操作是做PCA的唯一途径。ü小号/ñ-1个VüXü
变形虫2015年

这个答案更清楚地表明,我在书中看到了很多论述。谢谢。
usεr11852

纯粹出于参考目的:我认为IJ Good于1969年发表的Technometrics论文“ 矩阵的奇异分解的某些应用 ”是第一个完全参考该文献的人。
usεr11852

1
精确地@MattWenham。
变形虫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.