cp-methods | R Documentation |

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 *darr@num_modes`

vectors in the output,
stored in `darr@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).

cp(darr, num_components=NULL, max_iter=25, tol=1e-05) ## S4 method for signature 'DelayedArray' cp(darr, num_components, max_iter, tol)

`darr` |
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 |

This function is an extension of the `cp`

by DelayedArray.

Uses the Alternating Least Squares (ALS) estimation procedure. A progress bar is included to help monitor operations on large tensors.

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`

columns`conv`

whether or not

`resid`

<`tol`

by the last iteration`norm_percent`

the percent of Frobenius norm explained by the approximation

`est`

estimate of

`darr`

after compression`fnorm_resid`

the Frobenius norm of the error

`fnorm(est-darr)`

`all_resids`

vector containing the Frobenius norm of error for all the iterations

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

`tucker`

library("DelayedRandomArray") darr <- RandomUnifArray(c(3,4,5)) cp(darr, num_components=2)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.