我正在阅读一篇关于稀疏PCA的论文,论文链接如下: http://stats.stanford.edu/~imj/WEBLIST/AsYetUnpub/sparse.pdf
论文指出,如果你有n
个数据点,每个数据点用p
个特征表示,则PCA的复杂度为O(min(p^3,n^3))
。
请问有人能解释一下这是怎么样的/为什么吗?
我正在阅读一篇关于稀疏PCA的论文,论文链接如下: http://stats.stanford.edu/~imj/WEBLIST/AsYetUnpub/sparse.pdf
论文指出,如果你有n
个数据点,每个数据点用p
个特征表示,则PCA的复杂度为O(min(p^3,n^3))
。
请问有人能解释一下这是怎么样的/为什么吗?
协方差矩阵的计算复杂度为O(p2n),其特征值分解的复杂度为O(p3),因此PCA的复杂度为O(p2n+p3)。
O(min(p3,n3))意味着您可以在固定时间内分析任何大小的二维数据集,这显然是错误的。
$$X^TX = V \Lambda V^T$$
$$XX^T = U \Lambda U^T$$
$$U = XV\Lambda^{-1/2}$$
LaTeX 代码:
假设您的数据集为 $X \in R^{n\times p}$,其中 n: 样本数量,p: 样本维度,您对 $X^TX$ 的特征值分解感兴趣,这是 PCA 的主要计算成本。现在,矩阵 $X^TX \in \R^{p \times p}$ 和 $XX^T \in \R^{n\times n}$ 具有相同的 min(n, p) 个非负特征值和特征向量。假设 p 小于 n,您可以在 $O(p^3)$ 的时间复杂度内求解特征值分解。如果 p 大于 n(例如,在计算机视觉中,许多情况下样本的维数(像素数)大于可用样本数),则可以在 $O(n^3)$ 的时间内进行特征值分解。无论如何,您都可以从另一个矩阵的特征值和特征向量获取一个矩阵的特征向量,并且可以在 $O(min(p, n)^3)$ 的时间内完成该操作。