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

机器算法验证 主成分分析
2022-03-28 02:22:34

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

我从某人的代码中读到,在这种情况下,我们的维度多于观察值,我们不再对的协方差矩阵进行特征分解。相反,我们特征分解为什么是正确的?X01N1X0X0T

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

1个回答

协方差矩阵的大小为,由D×D

C=1N1X0X0.

你说的矩阵当然不是协方差矩阵;它被称为Gram 矩阵,大小为N×N

G=1N1X0X0.

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

看到这一点的最简单和最有用的方法是使用数据矩阵的奇异值分解。将其代入的表达式,我们得到:X=USVCG

C=VS2N1VG=US2N1U.

协方差矩阵的特征向量是主方向。这些特征向量上的数据投影是主成分;这些预测由缩放到单位长度的主成分由给出。如您所见,Gram 矩阵的特征向量正是这些按比例缩放的主成分。的特征值重合。VUSUCG

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