.fcnnls {NMF} | R Documentation

## 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:

min ||Y - X K||_F, s.t. K>=0

where Y and X are two real matrices of dimension n x p and n x 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 uses Moore-Penrose generalized `pseudoinverse` from the `corpcor` package instead of solve.
`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:

`coef` | the fitted coefficient matrix.
`Pset` | the 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, <URL: http://dx.doi.org/10.1002/cem.889>, <URL: http://doi.wiley.com/10.1002/cem.889>.

[Package NMF version 0.20.6 Index]