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

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 = 2000, eps = 10^-9, stopconv = 40, check.interval = 10) nmfAlgorithm.offset(..., .stop = NULL, maxIter = 2000, copy = FALSE, eps = 10^-9, stopconv = 40, check.interval = 10)

- 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-class`

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

an `NMFOffset-class`

model object.

`nmf_update.euclidean_offset.h`

and
`nmf_update.euclidean_offset.w`

compute the updated
NMFOffset model, using the optimized *C++*
implementations.

The associated model is defined as an
`NMFOffset-class`

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.

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,

Lee DD and Seung H (2001). "Algorithms for non-negative
matrix factorization." _Advances in neural information
processing systems_.