The function documented here implement stopping/convergence criteria commonly used in NMF algorithms.
NMFStop acts as a factory method that creates stopping criterion functions
from different types of values, which are subsequently used by
NMFStrategyIterative-class objects to determine when to stop their
iterative process.
nmf.stop.iteration generates a function that implements the stopping
criterion that limits the number of iterations to a maximum of n),
i.e. that returns TRUE if i>=n, FALSE otherwise.
nmf.stop.threshold generates a function that implements the stopping
criterion that stops when a given stationarity threshold is achieved by
successive iterations.
The returned function is identical to nmf.stop.stationary, but with
the default threshold set to threshold.
More precisely, the objective function is computed over n successive iterations (specified
in argument check.niter), every check.interval iterations.
The criterion stops when the absolute difference between the maximum and the minimum
objective values over these iterations is lower than a given threshold \alpha
(specified in stationary.th):
nmf.stop.connectivity implements the stopping criterion that is based
on the stationarity of the connectivity matrix.
NMFStop(s, check = TRUE) nmf.stop.iteration(n) nmf.stop.threshold(threshold) nmf.stop.stationary(object, i, y, x, stationary.th = .Machine$double.eps, check.interval = 5 * check.niter, check.niter = 10L, ...) nmf.stop.connectivity(object, i, y, x, stopconv = 40, check.interval = 10, ...)
objective,
which computes the objective value between x and y.a function that can be passed to argument .stop of function
nmf, which is typically used when the algorith is implemented as
an iterative strategy.
a function that can be used as a stopping criterion for NMF algorithms
defined as NMFStrategyIterative-class objects.
That is a function with arguments (strategy, i, target, data, ...)
that returns TRUE if the stopping criterion is satisfied -- which in
turn stops the iterative process, and FALSE otherwise.
NMFStop can take the following values:
nmf.stop.iteration;
nmf.stop.threshold;
| [max( D(i- N_s + 1), ..., D(i) ) - min( D(i- N_s + 1), ..., D(i) )] / n | <= alpha