cp_als function

Alternating Least Squares (ALS) for Candecomp/Parafac (CP)

Alternating Least Squares (ALS) for Candecomp/Parafac (CP)

Alternating Least Squares (ALS) algorithm with optional constraints for the minimization of the Candecomp/Parafac (CP) loss function.

cp_als( X, n, m, p, ncomp, const = "none", start = "random", conv = 1e-06, maxit = 10000, trace = FALSE )

Arguments

  • X: A three-way array or a matrix. If X is a matrix (matricised threeway array), n, m and p must be given and are the number of A-, B- and C-mode entities respectively
  • n: Number of A-mode entities
  • m: Number of B-mode entities
  • p: Number of C-mode entities
  • ncomp: Number of components to extract
  • const: Optional constraints for each mode. Can be a three element character vector or a single character, one of "none" for no constraints (default), "orth" for orthogonality constraints, "nonneg" for nonnegativity constraints or "zerocor" for zero correlation between the extracted factors. For example, const="orth" means orthogonality constraints for all modes, while const=c("orth", "none", "none") sets the orthogonality constraint only for mode A.
  • start: Initial values for the A, B and C components. Can be "svd" for starting point of the algorithm from SVD's, "random" for random starting point (orthonormalized component matrices or nonnegative matrices in case of nonnegativity constraint), or a list containing user specified components.
  • conv: Convergence criterion, default is conv=1e-6.
  • maxit: Maximum number of iterations, default is maxit=10000.
  • trace: Logical, provide trace output.

Returns

The result of the decomposition as a list with the following elements:

  • fit Value of the loss function
  • fp Fit value expressed as a percentage
  • ss Sum of squares
  • A Component matrix for the A-mode
  • B Component matrix for the B-mode
  • C Component matrix for the C-mode
  • iter Number of iterations
  • tripcos Minimal triple cosine between two components across the three component matrices, used to inspect degeneracy
  • mintripcos Minimal triple cosine during the iterative algorithm observed at every 10 iterations, used to inspect degeneracy
  • ftiter Matrix containing in each row the function value and the minimal triple cosine at every 10 iterations
  • const Optional constraints (same as the input parameter const)

Note

The argument const should be a three element character vector. Set const[j]="none" for unconstrained update in j-th mode weight matrix (the default), const[j]="orth" for orthogonal update in j-th mode weight matrix, const[j]="nonneg" for non-negative constraint on j-th mode or const[j]="zerocor" for zero correlation between the extracted factors. The default is unconstrained update for all modes.

The loss function to be minimized is sum(k)X(k)AD(k)B2sum(k)|| X(k) - A D(k) B' ||^2, where D(k)D(k) is a diagonal matrix holding the k-th row of C.

Examples

## Not run: ## Example with the OECD data data(elind) dim(elind) res <- cp_als(elind, ncomp=3) res$fp res$fp res$iter res <- cp_als(elind, ncomp=3, const="nonneg") res$A ## End(Not run)

References

Harshman, R.A. (1970). Foundations of Parafac procedure: models and conditions for an "explanatory" multi-mode factor analysis. UCLA Working Papers in Phonetics, 16: 1--84.

Harshman, R. A., & Lundy, M. E. (1994). PARAFAC: Parallel factor analysis. Computational Statistics and Data Analysis, 18, 39--72.

Lawson CL, Hanson RJ (1974). Solving Least Squares Problems. Prentice Hall, Englewood Cliffs, NJ.

Author(s)

Valentin Todorov, valentin.todorov@chello.at

  • Maintainer: Valentin Todorov
  • License: GPL (>= 3)
  • Last published: 2024-02-06