tucker-methods {DelayedTensor} | R Documentation

## Tucker Decomposition

### Description

The Tucker decomposition of a tensor. Approximates a K-Tensor using a n-mode product of a core tensor (with modes specified by `ranks`) with orthogonal factor matrices. If there is no truncation in one of the modes, then this is the same as the MPCA, `mpca`. If there is no truncation in all the modes (i.e. `ranks = darr@modes`), then this is the same as the HOSVD, `hosvd`. 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 Tucker decomposition, consult Kolda and Bader (2009).

### Usage

    tucker(darr, ranks=NULL, max_iter=25, tol=1e-05)

    ## S4 method for signature 'DelayedArray'
    tucker(darr, ranks, max_iter, tol)

### Arguments

`darr` | Tensor with K modes
`ranks` | a vector of the modes of the output core Tensor
`max_iter` | maximum number of iterations if error stays above `tol`
`tol` | relative Frobenius norm error tolerance

### Details

This function is an extension of the `tucker` by DelayedArray.

Uses the Alternating Least Squares (ALS) estimation procedure also known as Higher-Order Orthogonal Iteration (HOOI). Intialized using a (Truncated-)HOSVD. A progress bar is included to help monitor operations on large tensors.

### Value

a list containing the following:

`Z`

  the core tensor, with modes specified by `ranks`

`U`

  a list of orthgonal factor matrices - one for each mode, with the number of columns of the matrices given by `ranks`

`conv`

  whether or not `resid` < `tol` by the last iteration

`est`

  estimate of `darr` after compression

`norm_percent`

  the percent of Frobenius norm explained by the approximation

`fnorm_resid`

  the Frobenius norm of the error `fnorm(est-darr)`

`all_resids`

  vector containing the Frobenius norm of error for all the iterations

### Note

The length of `ranks` must match `darr@num_modes`.

### References

T. Kolda, B. Bader, "Tensor decomposition and applications". SIAM Applied Mathematics and Applications 2009.

### See Also

`hosvd`, `mpca`

### Examples

    library("DelayedRandomArray")
    darr <- RandomUnifArray(c(2,3,4))
    tucker(darr, ranks=c(1,2,3))

[Package DelayedTensor version 1.0.0 Index]