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