Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

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

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>.


NMF

Algorithms and Framework for Nonnegative Matrix Factorization (NMF)

v0.23.0
GPL (>= 2)
Authors
Renaud Gaujoux, Cathal Seoighe
Initial release
2020-07-30

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.