UMPCA {MFPCA} | R Documentation |
UMPCA: Uncorrelated Multilinear Principle Component Analysis
Description
This function implements the uncorrelated multilinear principal component analysis for tensors of dimension 2, 3 or 4. The code is basically the same as in the MATLAB toolbox UMPCA by Haiping Lu (Link: https://www.mathworks.com/matlabcentral/fileexchange/35432-uncorrelated-multilinear-principal-component-analysis-umpca, see also references).
Usage
UMPCA(TX, numP)
Arguments
TX |
The input training data in tensorial representation, the last mode
is the sample mode. For |
numP |
The dimension of the projected vector, denoted as |
Value
Us |
The multilinear projection, consisting of |
TXmean |
The mean
of the input training samples |
odrIdx |
The ordering index of projected features in decreasing variance. |
Warning
As this algorithm aims more at uncorrelated features than at an optimal reconstruction of the data, hence it might give poor results when used for the univariate decomposition of images in MFPCA.
References
Haiping Lu, K.N. Plataniotis, and A.N. Venetsanopoulos, "Uncorrelated Multilinear Principal Component Analysis for Unsupervised Multilinear Subspace Learning", IEEE Transactions on Neural Networks, Vol. 20, No. 11, Page: 1820-1836, Nov. 2009.
Examples
set.seed(12345)
# define "true" components
a <- sin(seq(-pi, pi, length.out = 100))
b <- exp(seq(-0.5, 1, length.out = 150))
# simulate tensor data
X <- a %o% b %o% rnorm(80, sd = 0.5)
# estimate one component
UMPCAres <- UMPCA(X, numP = 1)
# plot the results and compare to true values
plot(UMPCAres$Us[[1]][,1])
points(a/sqrt(sum(a^2)), pch = 20) # eigenvectors are defined only up to a sign change!
legend("topright", legend = c("True", "Estimated"), pch = c(20, 1))
plot(UMPCAres$Us[[2]][,1])
points(b/sqrt(sum(b^2)), pch = 20)
legend("topleft", legend = c("True", "Estimated"), pch = c(20, 1))