我有一个矩阵维空间中包含我的样本。我现在希望在 Matlab 中编写我自己的主成分分析 (PCA)。我贬低为。
我从某人的代码中读到,在这种情况下,我们的维度多于观察值,我们不再对的协方差矩阵进行特征分解。相反,我们特征分解。为什么是正确的?
正常协方差矩阵的大小为,其中的每个元素都告诉我们两个维度之间的协方差。对我来说,甚至不是正确的尺寸!它是矩阵,那么它会告诉我们什么?两个观测值之间的协方差?!
我有一个矩阵维空间中包含我的样本。我现在希望在 Matlab 中编写我自己的主成分分析 (PCA)。我贬低为。
我从某人的代码中读到,在这种情况下,我们的维度多于观察值,我们不再对的协方差矩阵进行特征分解。相反,我们特征分解。为什么是正确的?
正常协方差矩阵的大小为,其中的每个元素都告诉我们两个维度之间的协方差。对我来说,甚至不是正确的尺寸!它是矩阵,那么它会告诉我们什么?两个观测值之间的协方差?!
协方差矩阵的大小为,由
你说的矩阵当然不是协方差矩阵;它被称为Gram 矩阵,大小为:
主成分分析 (PCA) 可以通过这些矩阵中的任何一个的特征分解来实现。这些只是计算同一事物的两种不同方法。
看到这一点的最简单和最有用的方法是使用数据矩阵的奇异值分解。将其代入和的表达式,我们得到:
协方差矩阵的特征向量是主方向。这些特征向量上的数据投影是主成分;这些预测由。缩放到单位长度的主成分由给出。如您所见,Gram 矩阵的特征向量正是这些按比例缩放的主成分。和的特征值重合。
,您可能会看到建议使用 Gram 矩阵的原因是因为与协方差矩阵相比,它的大小更小,因此计算速度更快,特征分解速度更快。事实上,如果你的维数太高,你甚至无法将协方差矩阵存储在内存中,因此对 Gram 矩阵进行操作是进行 PCA 的唯一方法。但是对于可管理的,如果您愿意,即使 ,您仍然可以使用协方差矩阵的特征分解。