Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

scale.NMF

Rescaling NMF Models


Description

Rescales an NMF model keeping the fitted target matrix identical.

Usage

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

Value

an NMF object

Examples

# 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))

NMF

Algorithms and Framework for Nonnegative Matrix Factorization (NMF)

v0.23.0
GPL (>= 2)
Authors
Renaud Gaujoux, Cathal Seoighe
Initial release
2020-07-30

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.