torch.pca_lowrank

torch.pca_lowrank(A, q=None, center=True, niter=2)[源代码]

对低秩矩阵、矩阵的批量处理或稀疏矩阵进行线性主成分分析(PCA)。

此函数返回一个 namedtuple (U, S, V),它是矩阵 $A$ 的中心化后的奇异值分解的近似结果,满足 $A \approx U \operatorname{diag}(S) V^{\text{H}}$

注意

关于 (U, S, V) 与 PCA 的关系如下:

  • $A$ 是一个数据矩阵,包含 m 个样本和 n 个特征。

  • $V$ 列代表主方向

  • $S ** 2 / (m - 1)$ 包含$A^T A / (m - 1)$的特征值,当center=True时,这表示A的协方差。

  • matmul(A, V[:, :k]) 将数据投影到前 k 个主成分上

注意

与标准的 SVD 不同,返回的矩阵大小取决于指定的秩和 q 值,具体如下:

  • $U$ 是一个大小为 m x q 的矩阵

  • $S$ 是一个 q 向量

  • $V$ 是一个大小为 n x q 的矩阵

注意

为了获得可重复的结果,需要重置伪随机数生成器的种子。

参数
  • A (Tensor) – 输入张量,其大小为 $(*, m, n)$

  • q (int, optional) – 矩阵$A$的一个略高的秩。默认值为q = min(6, m, n)

  • center (bool, optional) – 如果为 True,则对输入张量进行中心化;否则,假设输入已经中心化。

  • niter (int, 可选) – 子空间迭代的次数;niter 必须是非负整数,默认为 2。

返回类型

Tuple[Tensor, Tensor, Tensor]

参考资料:

- Nathan Halko, Per-Gunnar Martinsson, and Joel Tropp, Finding
  structure with randomness: probabilistic algorithms for
  constructing approximate matrix decompositions,
  arXiv:0909.4061 [math.NA; math.PR], 2009 (available at
  `arXiv <http://arxiv.org/abs/0909.4061>`_).
本页目录