torch.pca_lowrank¶
-
torch.
pca_lowrank
(A: torch.Tensor, q: Optional[int] = None, center: bool = True, niter: int = 2) → Tuple[torch.Tensor, torch.Tensor, torch.Tensor][source]¶ Performs linear Principal Component Analysis (PCA) on a low-rank matrix, batches of such matrices, or sparse matrix.
This function returns a namedtuple
(U, S, V)
which is the nearly optimal approximation of a singular value decomposition of a centered matrix such that .Note
The relation of
(U, S, V)
to PCA is as follows:is a data matrix with
m
samples andn
featuresthe columns represent the principal directions
contains the eigenvalues of which is the covariance of
A
whencenter=True
is provided.matmul(A, V[:, :k])
projects data to the first k principal components
Note
Different from the standard SVD, the size of returned matrices depend on the specified rank and q values as follows:
is m x q matrix
is q-vector
is n x q matrix
Note
To obtain repeatable results, reset the seed for the pseudorandom number generator
- Parameters
A (Tensor) – the input tensor of size
q (int, optional) – a slightly overestimated rank of . By default,
q = min(6, m, n)
.center (bool, optional) – if True, center the input tensor, otherwise, assume that the input is centered.
niter (int, optional) – the number of subspace iterations to conduct; niter must be a nonnegative integer, and defaults to 2.
References:
- 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>`_).