R: NMF Multiplicative Update for NMF with Offset Models

nmf_update.euclidean_offset.h {NMF} | R Documentation

## NMF Multiplicative Update for NMF with Offset Models

### Description

These update rules proposed by Badea (2008) are modified version of the updates from Lee et al. (2001), that include an offset/intercept vector, which models a common baseline for each feature accross all samples:

V \approx W H + I

`nmf_update.euclidean_offset.h` and `nmf_update.euclidean_offset.w` compute the updated NMFOffset model, using the optimized C++ implementations.

`nmf_update.offset_R` implements a complete single update step, using plain R updates.

`nmf_update.offset` implements a complete single update step, using C++-optimised updates.

Algorithms ‘offset’ and ‘.R#offset’ provide the complete NMF-with-offset algorithm from Badea (2008), using the C++-optimised and pure R updates `nmf_update.offset` and `nmf_update.offset_R` respectively.

### Usage

      nmf_update.euclidean_offset.h(v, w, h, offset,
        eps = 10^-9, copy = TRUE)

      nmf_update.euclidean_offset.w(v, w, h, offset,
        eps = 10^-9, copy = TRUE)

      nmf_update.offset_R(i, v, x, eps = 10^-9, ...)

      nmf_update.offset(i, v, x, copy = FALSE, eps = 10^-9,
        ...)

      nmfAlgorithm.offset_R(..., .stop = NULL,
        maxIter = nmf.getOption("maxIter") %||% 2000,
        eps = 10^-9, stopconv = 40, check.interval = 10)

      nmfAlgorithm.offset(..., .stop = NULL,
        maxIter = nmf.getOption("maxIter") %||% 2000,
        copy = FALSE, eps = 10^-9, stopconv = 40,
        check.interval = 10)

### Arguments

`offset` | current value of the offset/intercept vector. It must be of length equal to the number of rows in the target matrix.
`v` | target matrix.
`eps` | small numeric value used to ensure numeric stability, by shifting up entries from zero to this fixed value.
`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`.
`i` | current iteration number.
`x` | current NMF model, as an `NMF` object.
`...` | 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.
`w` | current basis matrix
`h` | current coefficient matrix

### Details

The associated model is defined as an `NMFOffset` object. The details of the multiplicative updates can be found in Badea (2008). Note that the updates are the ones defined for a single datasets, not the simultaneous NMF model, which is fit by algorithm ‘siNMF’ from formula-based NMF models.

### Value

an `NMFOffset` model object.

### Author(s)

Original update definition: Liviu Badea

Port to R and optimisation in C++: Renaud Gaujoux

### References

Badea L (2008). "Extracting gene expression profiles common to colon and pancreatic adenocarcinoma using simultaneous nonnegative matrix factorization." _Pacific Symposium on Biocomputing. Pacific Symposium on Biocomputing_, *290*, pp. 267-78. ISSN 1793-5091, <URL: http://www.ncbi.nlm.nih.gov/pubmed/18229692>.

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\#0>.

[Package NMF version 0.21.0 Index]