The built-in NMF algorithms described here minimise the
Kullback-Leibler divergence (KL) between an NMF model and
a target matrix. They use the updates for the basis and
coefficient matrices (
H) defined by
Brunet et al. (2004), which are essentially those
from Lee et al. (2001), with an stabilisation step
that shift up all entries from zero every 10 iterations,
to a very small positive value.
nmf_update.brunet implements in C++ an optimised
version of the single update step.
Algorithm KL provides an NMF algorithm based on
the C++-optimised version of the updates from
Brunet et al. (2004), which uses the stationarity
of the objective value as a stopping criterion
nmf.stop.stationary, instead of the
stationarity of the connectivity matrix
nmf.stop.connectivity as used by
nmf_update.brunet_R(i, v, x, eps = .Machine$double.eps, ...) nmf_update.brunet(i, v, x, copy = FALSE, eps = .Machine$double.eps, ...) nmfAlgorithm.brunet_R(..., .stop = NULL, maxIter = 2000, eps = .Machine$double.eps, stopconv = 40, check.interval = 10) nmfAlgorithm.brunet(..., .stop = NULL, maxIter = 2000, copy = FALSE, eps = .Machine$double.eps, stopconv = 40, check.interval = 10) nmfAlgorithm.KL(..., .stop = NULL, maxIter = 2000, copy = FALSE, eps = .Machine$double.eps, stationary.th = .Machine$double.eps, check.interval = 5 * check.niter, check.niter = 10L) nmfAlgorithm.brunet_M(..., object, y, x)
FALSE) or on a copy (
TRUE- default). With
copy=FALSEthe memory footprint is very small, and some speed-up may be achieved in the case of big matrices. However, greater care should be taken due the side effect. We recommend that only experienced users use
(object="NMFStrategy", i="integer", y="matrix", x="NMF", ...), where
NMFStrategyobject that describes the algorithm being run,
iis the current iteration,
yis the target matrix and
xis the current value of the NMF model.
Original MATLAB files and references can be found at:
Original license terms:
This software and its documentation are copyright 2004 by the Broad Institute/Massachusetts Institute of Technology. All rights are reserved. This software is supplied without any warranty or guaranteed support whatsoever. Neither the Broad Institute nor MIT can not be responsible for its use, misuse, or functionality.
nmf_update.brunet_R implements in pure R a single
update step, i.e. it updates both matrices.
Brunet J, Tamayo P, Golub TR and Mesirov JP (2004).
"Metagenes and molecular pattern discovery using matrix
factorization." _Proceedings of the National Academy of
Sciences of the United States of America_, *101*(12), pp.
4164-9. ISSN 0027-8424,
Lee DD and Seung H (2001). "Algorithms for non-negative
matrix factorization." _Advances in neural information