This class provides a specific implementation for the
generic function run
-- concretising the virtual
interface class NMFStrategy
, for NMF
algorithms that conform to the following iterative schema
(starred numbers indicate mandatory steps):
1. Initialisation
2*. Update the model at each iteration
3. Stop if some criterion is satisfied
4. Wrap up
This schema could possibly apply to all NMF algorithms, since these are essentially optimisation algorithms, almost all of which use iterative methods to approximate a solution of the optimisation problem. The main advantage is that it allows to implement updates and stopping criterion separately, and combine them in different ways. In particular, many NMF algorithms are based on multiplicative updates, following the approach from Lee et al. (2001), which are specially suitable to be cast into this simple schema.
optional function that performs some initialisation or pre-processing on the model, before starting the iteration loop.
mandatory function that implement the update step, which computes new values for the model, based on its previous value. It is called at each iteration, until the stopping criterion is met or the maximum number of iteration is achieved.
optional function that implements the stopping criterion. It is called before each Update step. If not provided, the iterations are stopped after a fixed number of updates.
optional function that wraps up the result into an NMF object. It is called just before returning the
signature(object =
"NMFStrategyIterative", y = "matrix", x = "NMFfit")
:
Runs an NMF iterative algorithm on a target matrix
y
.
signature(object =
"NMFStrategyIterative")
: Show method for objects of
class NMFStrategyIterative
Lee DD and 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>.