nmf_update.ns {NMF} | R Documentation

## NMF Multiplicative Update for Nonsmooth Nonnegative Matrix Factorization (nsNMF).

### Description

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.

### Usage

      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)

### Arguments

`i` | current iteration number.
`v` | target matrix.
`x` | current NMF model, as an `NMF` object.
`copy` | 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).

`.stop`

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.

`maxIter` | maximum number of iterations to perform.
`stopconv` | number of iterations intervals over which the connectivity matrix must not change for stationarity to be achieved.
`check.interval` | interval (in number of iterations) on which the stopping criterion is computed.

### Details

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.

### Value

an `NMFns` model object.

### References

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>.

[Package NMF version 0.20.6 Index]