scale.NMF | R Documentation |
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
|
scale |
scaling coefficient applied to |
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_1 H_1 = (W_1 D) (D^{-1} H_1) = W_2 H_2
with D= \alpha diag(1/\delta_1,
\ldots, 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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.