Rescaling NMF Models
Rescales an NMF model keeping the fitted target matrix identical.
## S3 method for class 'NMF' scale(x, center = c("basis", "coef"), scale = 1)
x |
an NMF object |
center |
either a numeric normalising vector
delta, or either |
scale |
scaling coefficient applied to D, i.e.
the value of alpha, or, if
|
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
# 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))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.