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.
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)
an NMFns
model object.
current iteration number.
target matrix.
current NMF model, as an
NMF
object.
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).
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.
maximum number of iterations to perform.
number of iterations intervals over which the connectivity matrix must not change for stationarity to be achieved.
interval (in number of iterations) on which the stopping criterion is computed.
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.
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>.