使用协方差矩阵的 SVD 清楚地描述 PCA

机器算法验证 主成分分析 降维 svd
2022-03-31 14:39:24

在阅读了数千篇关于 PCA 和 SVD 的文章,在许多编程框架中使用它们,甚至实现了类似的技术(如随机索引)之后,我发现我仍然对 PCA 的某些部分进行降维存有疑问。所以让我展示一下我所知道的和我怀疑的。

假设我们次观察,组织为矩阵要执行 PCA,我们应该首先计算协方差矩阵的 MLE 估计:NMARNMΣRMM

Σ=1Ni=1N(xix¯)(xix¯)T

其中个观测值,是平均观测值。xiRMix¯=1Nk=1NxkRM

然后我们可以使用 SVD 分解如下:Σ

Σ=USVT

现在这里有几件事我不确定:

  1. 尺寸多少?USVT
  2. 中,究竟什么被认为是特征值,我应该将它们中的哪一个用作主成分USVT
  3. 如何将原始观察投影到新的缩减空间上,反之亦然?xi

UPD。使用 SVD 计算 PCA 有另一种方法 - 通过分解数据矩阵()而不是协方差矩阵()。可以在答案中找到有关此过程的良好描述。AΣ=AAT

1个回答
  • 什么尺寸U,SVT?

自从Σ是一个 M×M 矩阵,三个矩阵U,S,VT将是所有 M 乘 M 矩阵。因为在 N × M 矩阵上应用 SVD,你会得到UN×N,SN×M, 和VM×MT. 你可以在matlab中验证。当您截断奇异值时S您还应该删除相应的部分UVT.

  • USVT究竟什么被认为是特征值,我应该将它们中的哪些用作主成分

PCA 应该通过对协方差矩阵进行特征值分解来完成Σ, 或通过应用 SVD 来完成A. 的左奇异向量SVD(A)来自特征向量AAT,以及的右奇异向量SVD(A)来自的特征向量ATA. 但是你需要根据特征值从大到小对它们进行排序,并使它们正交化。ATA称为 Gram Matrix,与协方差矩阵有关Σ. 如果维度向量在A(总共 M 个)都已居中,Gram 矩阵 = N * 协方差矩阵。查看 Wikipedia 和一些 SVD 和 PCA 的教程。

  • 我如何投射原始观察结果xi到新的缩小空间,反之亦然?

如果应用 SVDA对于 PCA,它将是uiS; 如果对协方差矩阵应用特征分解Σ, 和V是的特征向量Σ, 这是xiV.