Description Usage Arguments Details Author(s) Source References
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 (W and H) defined by Brunet et al. (2004), which are essentially those from Lee and Seung (2001), with an stabilisation step that shift up all entries from zero every 10 iterations, to a very small positive value.
library(RcppOctave) file.show(system.mfile('brunet.m', package='NMF'))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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 = nmf.getOption("maxIter") %||% 2000,
eps = .Machine$double.eps,
stopconv = 40,
check.interval = 10
)
nmfAlgorithm.brunet(
...,
.stop = NULL,
maxIter = nmf.getOption("maxIter") %||% 2000,
copy = FALSE,
eps = .Machine$double.eps,
stopconv = 40,
check.interval = 10
)
nmfAlgorithm.KL(
...,
.stop = NULL,
maxIter = nmf.getOption("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)
|
i |
current iteration number. |
v |
target matrix. |
x |
current NMF model, as an |
eps |
small numeric value used to ensure numeric stability, by shifting up entries from zero to this fixed value. |
... |
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 |
copy |
logical that indicates if the update should be made on the original
matrix directly ( |
.stop |
specification of a stopping criterion, that is used instead of the one associated to the NMF algorithm. It may be specified as:
|
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. |
stationary.th |
maximum absolute value of the gradient, for the objective function to be considered stationary. |
check.niter |
number of successive iteration used to compute the stationnary criterion. |
object |
an object of class |
y |
the target data that we want to approximate, passed as a matrix(-like) object. |
nmf_update.brunet_R
implements in pure R a single update step, i.e. it updates
both matrices.
Original implementation in MATLAB: Jean-Philippe Brunet brunet@broad.mit.edu
Port to R and optimisation in C++: Renaud Gaujoux
Original MATLAB files and references can be found at:
http://www.broadinstitute.org/mpr/publications/projects/NMF/nmf.m
http://www.broadinstitute.org/publications/broad872
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.
Brunet J, Tamayo P, Golub TR, 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), 4164-9. ISSN 0027-8424, doi: 10.1073/pnas.0308531101 (URL: https://doi.org/10.1073/pnas.0308531101).
Lee DD, Seung H (2001). “Algorithms for non-negative matrix factorization.” _Advances in neural information processing systems_. <URL: http://scholar.google.com/scholar?q=intitle:Algorithms+for+non-negative+matrix+factorization\#0>.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.