NMF (version 0.21.0)

nmf_update.ns: NMF Multiplicative Update for Nonsmooth Nonnegative Matrix Factorization (nsNMF).

Description

These update rules, defined for the '>NMFns model \(V \approx W S H\) from Pascual-Montano et al. (2006), that introduces an intermediate smoothing matrix to enhance sparsity of the factors.

nmf_update.ns computes the updated nsNMF model. It uses the optimized C++ implementations nmf_update.KL.w and nmf_update.KL.h to update \(W\) and \(H\) respectively.

nmf_update.ns_R implements the same updates in plain R.

Algorithms ‘nsNMF’ and ‘.R#nsNMF’ provide the complete NMF algorithm from Pascual-Montano et al. (2006), using the C++-optimised and plain R updates nmf_update.brunet and nmf_update.brunet_R respectively. The stopping criterion is based on the stationarity of the connectivity matrix.

Usage

nmf_update.ns(i, v, x, copy = FALSE, ...)

nmf_update.ns_R(i, v, x, ...)

nmfAlgorithm.nsNMF_R(..., .stop = NULL, maxIter = nmf.getOption("maxIter") %||% 2000, stopconv = 40, check.interval = 10)

nmfAlgorithm.nsNMF(..., .stop = NULL, maxIter = nmf.getOption("maxIter") %||% 2000, copy = FALSE, stopconv = 40, check.interval = 10)

Arguments

i

current iteration number.

v

target matrix.

x

current NMF model, as an '>NMF object.

copy

logical that indicates if the update should be made on the original matrix directly (FALSE) or on a copy (TRUE - default). With copy=FALSE the 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 copy=TRUE.

...

extra arguments. These are generally not used and present only to allow other arguments from the main call to be passed to the initialisation and stopping criterion functions (slots onInit and Stop respectively).

.stop

specification of a stopping criterion, that is used instead of the one associated to the NMF algorithm. It may be specified as:

  • the access key of a registered stopping criterion;

  • a single integer that specifies the exact number of iterations to perform, which will be honoured unless a lower value is explicitly passed in argument maxIter.

  • a single numeric value that specifies the stationnarity threshold for the objective function, used in with nmf.stop.stationary;

  • a function with signature (object="NMFStrategy", i="integer", y="matrix", x="NMF", ...), where object is the NMFStrategy object that describes the algorithm being run, i is the current iteration, y is the target matrix and x is the current value of the NMF model.

maxIter

maximum number of iterations to perform.

stopconv

number of iterations intervals over which the connectivity matrix must not change for stationarity to be achieved.

check.interval

interval (in number of iterations) on which the stopping criterion is computed.

Value

an '>NMFns model object.

Details

The multiplicative updates are based on the updates proposed by Brunet et al. (2004), except that the NMF estimate \(W H\) is replaced by \(W S H\) and \(W\) (resp. \(H\)) is replaced by \(W S\) (resp. \(S H\)) in the update of \(H\) (resp. \(W\)).

See nmf_update.KL for more details on the update formula.

References

Pascual-Montano A, Carazo JM, Kochi K, Lehmann D and Pascual-marqui RD (2006). "Nonsmooth nonnegative matrix factorization (nsNMF)." _IEEE Trans. Pattern Anal. Mach. Intell_, *28*, pp. 403-415.

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, <URL: http://dx.doi.org/10.1073/pnas.0308531101>, <URL: http://www.ncbi.nlm.nih.gov/pubmed/15016911>.