nmf_update.brunet
implements in C++ an optimised
version of the single update step.
Algorithms brunet and .R#brunet provide
the complete NMF algorithm from Brunet et al.
(2004), using the C++-optimised and pure R updates
nmf_update.brunet
and
nmf_update.brunet_R
respectively.
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
brunet.
library(RcppOctave) file.show(system.mfile('brunet.m', package='NMF'))
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)
NMF
object.onInit
and Stop
respectively).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
.maxIter
. nmf.stop.stationary
;
(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. nmf_update.brunet_R
implements in pure R a single
update step, i.e. it updates both matrices.
Lee DD and Seung H (2001). "Algorithms for non-negative
matrix factorization." _Advances in neural information
processing systems_.