cpDecomposition {scTenifoldNet} | R Documentation |
Canonical Polyadic Decomposition
Description
Canonical Polyadic (CP) decomposition of a tensor, aka CANDECOMP/PARAFRAC. Approximate a K-Tensor using a sum of num_components
rank-1 K-Tensors. A rank-1 K-Tensor can be written as an outer product of K vectors. There are a total of num_compoents *tnsr@num_modes
vectors in the output, stored in tnsr@num_modes
matrices, each with num_components
columns. This is an iterative algorithm, with two possible stopping conditions: either relative error in Frobenius norm has gotten below tol
, or the max_iter
number of iterations has been reached. For more details on CP decomposition, consult Kolda and Bader (2009).
Usage
cpDecomposition(tnsr, num_components = NULL, max_iter = 25, tol = 1e-05)
Arguments
tnsr |
Tensor with K modes |
num_components |
the number of rank-1 K-Tensors to use in approximation |
max_iter |
maximum number of iterations if error stays above |
tol |
relative Frobenius norm error tolerance |
Details
Uses the Alternating Least Squares (ALS) estimation procedure. A progress bar is included to help monitor operations on large tensors.
Value
a list containing the following
lambdas
a vector of normalizing constants, one for each component
U
a list of matrices - one for each mode - each matrix with
num_components
columnsconv
whether or not
resid
<tol
by the last iterationnorm_percent
the percent of Frobenius norm explained by the approximation
est
estimate of
tnsr
after compressionfnorm_resid
the Frobenius norm of the error
fnorm(est-tnsr)
all_resids
vector containing the Frobenius norm of error for all the iterations
References
T. Kolda, B. Bader, "Tensor decomposition and applications". SIAM Applied Mathematics and Applications 2009.