mpca {rTensor} | R Documentation |
Multilinear Principal Components Analysis
Description
This is basically the Tucker decomposition of a K-Tensor, tucker
, with one of the modes uncompressed. If K = 3, then this is also known as the Generalized Low Rank Approximation of Matrices (GLRAM). This implementation assumes that the last mode is the measurement mode and hence uncompressed. 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 the MPCA of tensors, consult Lu et al. (2008).
Usage
mpca(tnsr, ranks = NULL, max_iter = 25, tol = 1e-05)
Arguments
tnsr |
Tensor with K modes |
ranks |
a vector of the compressed modes of the output core Tensor, this has length K-1 |
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:
Z_ext
the extended core tensor, with the first K-1 modes given by
ranks
U
a list of K-1 orthgonal factor matrices - one for each compressed mode, with the number of columns of the matrices given by
ranks
conv
whether or not
resid
<tol
by the last iterationest
estimate of
tnsr
after compressionnorm_percent
the percent of Frobenius norm explained by the approximation
fnorm_resid
the Frobenius norm of the error
fnorm(est-tnsr)
all_resids
vector containing the Frobenius norm of error for all the iterations
Note
The length of ranks
must match tnsr@num_modes-1
.
References
H. Lu, K. Plataniotis, A. Venetsanopoulos, "Mpca: Multilinear principal component analysis of tensor objects". IEEE Trans. Neural networks, 2008.
See Also
Examples
### How to retrieve faces_tnsr from figshare
# faces_tnsr <- load_orl()
# subject <- faces_tnsr[,,21,]
dummy_faces_tnsr <- rand_tensor(c(92,112,40,10))
subject <- dummy_faces_tnsr[,,21,]
mpcaD <- mpca(subject, ranks=c(10, 10))
mpcaD$conv
mpcaD$norm_percent
plot(mpcaD$all_resids)