# scale.NMF: Rescaling NMF Models In renozao/NMF: Algorithms and framework for Nonnegative Matrix Factorization (NMF)

## Description

Rescales an NMF model keeping the fitted target matrix identical.

## Usage

 ```1 2 3``` ``` ## S3 method for class 'NMF' scale(x, center = c("basis", "coef"), scale = 1) ```

## Arguments

 `x` an NMF object `center` either a numeric normalising vector delta, or either `'basis'` or `'coef'`, which respectively correspond to using the column sums of the basis matrix or the inverse of the row sums of the coefficient matrix as a normalising vector. If numeric, `center` should be a single value or a vector of length the rank of the NMF model, i.e. the number of columns in the basis matrix. `scale` scaling coefficient applied to D, i.e. the value of alpha, or, if `center='coef'`, the value of 1/alpha (see section Details).

## Details

Standard NMF models are identifiable modulo a scaling factor, meaning that the basis components and basis profiles can be rescaled without changing the fitted values:

X = W H = (W D) (D^-1 H)

with D= alpha * diag(1/delta_1, ..., 1/delta_r)

The default call `scale(object)` rescales the basis NMF object so that each column of the basis matrix sums up to one.

an NMF object

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22``` ```# random 3-rank 10x5 NMF model x <- rnmf(3, 10, 5) # rescale based on basis colSums(basis(x)) colSums(basis(scale(x))) rx <- scale(x, 'basis', 10) colSums(basis(rx)) rowSums(coef(rx)) # rescale based on coef rowSums(coef(x)) rowSums(coef(scale(x, 'coef'))) rx <- scale(x, 'coef', 10) rowSums(coef(rx)) colSums(basis(rx)) # fitted target matrix is identical but the factors have been rescaled rx <- scale(x, 'basis') all.equal(fitted(x), fitted(rx)) all.equal(basis(x), basis(rx)) ```

renozao/NMF documentation built on Aug. 21, 2018, 3:42 a.m.