This class implements the standard model of Nonnegative Matrix Factorization. It provides a general structure and generic functions to manage factorizations that follow the standard NMF model, as defined by Lee et al. (2001).
Let V
be a n \times m
non-negative matrix and
r
a positive integer. In its standard form (see
references below), a NMF of V
is commonly defined
as a pair of matrices (W, H)
such that:
V \equiv W H,where:
W
and H
are n
\times r
and r \times m
matrices respectively with
non-negative entries; \equiv
is to be
understood with respect to some loss function. Common
choices of loss functions are based on Frobenius norm or
Kullback-Leibler divergence. Integer r
is called the factorization rank.
Depending on the context of application of NMF, the
columns of W
and H
are given different names:
W
basis vector,
metagenes, factors, source, image basis H
mixture coefficients, metagene sample
expression profiles, weights H
basis profiles, metagene expression profiles NMF approaches have been successfully applied to several fields. The package NMF was implemented trying to use names as generic as possible for objects and methods.
The following terminology is used:
V
V
W
W
H
H
However, because the package NMF was primarily implemented to work with gene expression microarray data, it also provides a layer to easily and intuitively work with objects from the Bioconductor base framework. See bioc-NMF for more details.
matrix
that contains the basis matrix,
i.e. the first matrix factor of the factorisation
matrix
that contains the coefficient
matrix, i.e. the second matrix factor of the
factorisation
data.frame
that contains the
primary data that define fixed basis terms. See
bterms
.
IMPORTANT: This slot is set on construction of an NMF
model via
nmfModel
and
is not recommended to not be subsequently changed by the
end-user.
data.frame
that contains the
primary data that define fixed coefficient terms. See
cterms
.
IMPORTANT: This slot is set on construction of an NMF
model via
nmfModel
and
is not recommended to not be subsequently changed by the
end-user.
signature(object = "NMFstd")
: Get
the basis matrix in standard NMF models
This function returns slot W
of object
.
signature(object = "NMFstd", value
= "matrix")
: Set the basis matrix in standard NMF models
This function sets slot W
of object
.
signature(object = "NMFstd")
:
Default method tries to coerce value
into a
data.frame
with as.data.frame
.
signature(object = "NMFstd")
: Get the
mixture coefficient matrix in standard NMF models
This function returns slot H
of object
.
signature(object = "NMFstd", value =
"matrix")
: Set the mixture coefficient matrix in
standard NMF models
This function sets slot H
of object
.
signature(object = "NMFstd")
:
Default method tries to coerce value
into a
data.frame
with as.data.frame
.
signature(object = "NMFstd")
:
Compute the target matrix estimate in standard NMF
models.
The estimate matrix is computed as the product of the two
matrix slots W
and H
:
V ~ W H
signature(object = "NMFstd")
:
Method for standard NMF models, which returns the integer
vector that is stored in slot ibterms
when a
formula-based NMF model is instantiated.
signature(object = "NMFstd")
:
Method for standard NMF models, which returns the integer
vector that is stored in slot icterms
when a
formula-based NMF model is instantiated.
Lee DD and Seung H (2001). "Algorithms for non-negative
matrix factorization." _Advances in neural information
processing systems_.
# create a completely empty NMFstd object
new('NMFstd')
## <Object of class:NMFstd>
## features: 0
## basis/rank: 0
## samples: 0
# create a NMF object based on one random matrix: the missing matrix is deduced
# Note this only works when using factory method NMF
n <- 50; r <- 3;
w <- rmatrix(n, r)
nmfModel(W=w)
## <Object of class:NMFstd>
## features: 50
## basis/rank: 3
## samples: 0
# create a NMF object based on random (compatible) matrices
p <- 20
h <- rmatrix(r, p)
nmfModel(W=w, H=h)
## <Object of class:NMFstd>
## features: 50
## basis/rank: 3
## samples: 20
# create a NMF object based on incompatible matrices: generate an error
h <- rmatrix(r+1, p)
try( new('NMFstd', W=w, H=h) )
try( nmfModel(w, h) )
# Giving target dimensions to the factory method allow for coping with dimension
# incompatibilty (a warning is thrown in such case)
nmfModel(r, W=w, H=h)
## Warning: nmfModel - Objective rank [3] is lower than the number of rows in
## H [4]: only the first 3 rows of H will be used
## <Object of class:NMFstd>
## features: 50
## basis/rank: 3
## samples: 20