Learn R Programming

NMF (version 0.2.2)

.fcnnls: Internal Routine for Fast Combinatorial Nonnegative Least-Squares

Description

This is the workhorse function for the higher-level function fcnnls, which implements the fast nonnegative least-square algorithm for multiple right-hand-sides from Van Benthem et al. (2004) to solve the following problem:

$$\begin{array}{l} \min \|Y - X K\|_F\ \mbox{s.t. } K>=0 \end{array}$$

where $Y$ and $X$ are two real matrices of dimension $n \times p$ and $n \times r$ respectively, and $\|.\|_F$ is the Frobenius norm.

The algorithm is very fast compared to other approaches, as it is optimised for handling multiple right-hand sides.

Usage

.fcnnls(x, y, verbose = FALSE, pseudo = FALSE, eps = 0)

Arguments

x
the coefficient matrix
y
the target matrix to be approximated by $X K$.
verbose
logical that indicates if log messages should be shown.
pseudo
By default (pseudo=FALSE) the algorithm uses Gaussian elimination to solve the successive internal linear problems, using the solve function. If pseudo=TRUE the algorithm us
eps
threshold for considering entries as nonnegative. This is an experimental parameter, and it is recommended to leave it at 0.

Value

  • A list with the following elements:
  • coefthe fitted coefficient matrix.
  • Psetthe set of passive constraints, as a logical matrix of the same size as K that indicates which element is positive.

References

Van Benthem M and Keenan MR (2004). "Fast algorithm for the solution of large-scale non-negativity-constrained least squares problems." _Journal of Chemometrics_, *18*(10), pp. 441-450. ISSN 0886-9383, , .