The class NMF
is a virtual class that
defines a common interface to handle Nonnegative Matrix
Factorization models (NMF models) in a generic way.
Provided a minimum set of generic methods is implemented
by concrete model classes, these benefit from a whole set
of functions and utilities to perform common computations
and tasks in the context of Nonnegative Matrix
Factorization.
The function misc
provides access to miscellaneous
data members stored in slot misc
(as a
list
), which allow extensions of NMF models to be
implemented, without defining a new S4 class.
misc(object, ...) # S4 method for NMF
$(x, name)
# S4 method for NMF
$(x, name)<-value
# S4 method for NMF
.DollarNames(x, pattern = "")
an object that inherit from class
NMF
extra arguments (not used)
object from which to extract element(s) or in which to replace element(s).
A literal character string or a name
(possibly backtick quoted). For extraction, this
is normally (see under ‘Environments’) partially
matched to the names
of the object.
typically an array-like R object of a
similar class as x
.
A regular expression. Only matching names are returned.
A list that is used internally to temporarily store algorithm parameters during the computation.
signature(x = "NMF")
: This method
provides a convenient way of sub-setting objects of class
NMF
, using a matrix-like syntax.
It allows to consistently subset one or both matrix factors in the NMF model, as well as retrieving part of the basis components or part of the mixture coefficients with a reduced amount of code.
See [,NMF-method
for more details.
signature(x = "NMF")
: shortcut for
x@misc[[name, exact=TRUE]]
respectively.
signature(x = "NMF")
: shortcut for
x@misc[[name, exact=TRUE]]
respectively.
signature(x = "NMF")
: shortcut for
x@misc[[name]] <- value
signature(x = "NMF")
: shortcut for
x@misc[[name]] <- value
signature(object = "NMF")
: Pure
virtual method for objects of class
NMF
, that should be overloaded by
sub-classes, and throws an error if called.
signature(object = "NMF", value =
"matrix")
: Pure virtual method for objects of class
NMF
, that should be overloaded by
sub-classes, and throws an error if called.
signature(object = "NMF")
: Default
methods that calls .basis<-
and check the validity
of the updated object.
signature(x = "NMF", y =
"matrix")
: Computes the correlations between the basis
vectors of x
and the columns of y
.
signature(x = "NMF", y = "NMF")
:
Computes the correlations between the basis vectors of
x
and y
.
signature(x = "NMF", y =
"missing")
: Computes the correlations between the basis
vectors of x
.
signature(object = "NMF")
: Plots a
heatmap of the basis matrix of the NMF model
object
. This method also works for fitted NMF
models (i.e. NMFfit
objects).
signature(x = "NMF")
: Binds compatible
matrices and NMF models together.
signature(object = "NMF")
: Pure
virtual method for objects of class
NMF
, that should be overloaded by
sub-classes, and throws an error if called.
signature(object = "NMF", value =
"matrix")
: Pure virtual method for objects of class
NMF
, that should be overloaded by
sub-classes, and throws an error if called.
signature(object = "NMF")
: Default
methods that calls .coef<-
and check the validity
of the updated object.
signature(object = "NMF")
:
Alias to coef,NMF
, therefore also pure virtual.
signature(object = "NMF")
: The
default method for NMF objects has special default values
for some arguments of aheatmap
(see
argument description).
signature(object = "NMF")
:
Computes the connectivity matrix for an NMF model, for
which cluster membership is given by the most
contributing basis component in each sample. See
predict,NMF-method
.
signature(object = "NMF")
: This
method is provided for completeness and is identical to
connectivity
, and returns the connectivity
matrix, which, in the case of a single NMF model, is also
the consensus matrix.
signature(object = "NMF")
:
Compute the hierarchical clustering on the connectivity
matrix of object
.
signature(object = "NMF")
:
Plots a heatmap of the connectivity matrix of an NMF
model.
signature(object = "NMF")
:
Computes the distance between a matrix and the estimate
of an NMF
model.
signature(x = "NMF")
: method for NMF
objects for the base generic dim
. It
returns all dimensions in a length-3 integer vector: the
number of row and columns of the estimated target matrix,
as well as the factorization rank (i.e. the number of
basis components).
signature(x = "NMF")
: Returns the
dimension names of the NMF model x
.
It returns either NULL if no dimnames are set on the object, or a 3-length list containing the row names of the basis matrix, the column names of the mixture coefficient matrix, and the column names of the basis matrix (i.e. the names of the basis components).
signature(x = "NMF")
: sets the
dimension names of the NMF model x
.
value
can be NULL
which resets all
dimension names, or a 1, 2 or 3-length list providing
names at least for the rows of the basis matrix.
See dimnames
for more details.
signature(x = "NMF")
:
Auto-completion for NMF
objects
signature(x = "NMF")
:
Auto-completion for NMF
objects
signature(object = "NMF")
:
Select basis-specific features from an NMF model, by
applying the method extractFeatures,matrix
to its
basis matrix.
signature(object = "NMF")
:
Computes feature scores on the basis matrix of an NMF
model.
signature(object = "NMF")
: Pure
virtual method for objects of class
NMF
, that should be overloaded by
sub-classes, and throws an error if called.
signature(object = "NMF")
: Default
pure virtual method that ensure a method is defined for
concrete NMF model classes.
signature(object = "NMF")
: Default
pure virtual method that ensure a method is defined for
concrete NMF model classes.
signature(x = "NMF")
: Method
loadings for NMF Models
The method loadings
is identical to basis
,
but do not accept any extra argument.
See loadings,NMF-method
for more details.
signature(object = "NMF")
:
Deprecated method that is substituted by
coefmap
and basismap
.
signature(x = "NMF", y = "NMF")
:
Compares two NMF models.
Arguments in ...
are used only when
identical=FALSE
and are passed to
all.equal
.
signature(x = "NMF", y =
"NMFfit")
: Compares two NMF models when at least one
comes from a NMFfit object, i.e. an object returned by a
single run of nmf
.
signature(x = "NMF", y =
"NMFfitX")
: Compares two NMF models when at least one
comes from multiple NMF runs.
signature(object = "NMF")
: Apply
nneg
to the basis matrix of an NMF
object (i.e. basis(object)
). All extra arguments
in ...
are passed to the method
nneg,matrix
.
signature(object = "NMF")
: Default
method for NMF models
signature(x = "NMF", y = "matrix")
:
Computes the correlations between the basis profiles of
x
and the rows of y
.
signature(x = "NMF", y = "NMF")
:
Computes the correlations between the basis profiles of
x
and y
.
signature(x = "NMF", y =
"missing")
: Computes the correlations between the basis
profiles of x
.
signature(x = "NMF")
: Returns the
target matrix estimate of the NMF model x
,
perturbated by adding a random matrix generated using the
default method of rmatrix
: it is a equivalent to
fitted(x) + rmatrix(fitted(x), ...)
.
This method can be used to generate random target matrices that depart from a known NMF model to a controlled extend. This is useful to test the robustness of NMF algorithms to the presence of certain types of noise in the data.
signature(x = "NMF", target =
"numeric")
: Generates a random NMF model of the same
class and rank as another NMF model.
This is the workhorse method that is eventually called by
all other methods. It generates an NMF model of the same
class and rank as x
, compatible with the
dimensions specified in target
, that can be a
single or 2-length numeric vector, to specify a square or
rectangular target matrix respectively.
See rnmf,NMF,numeric-method
for more
details.
signature(x = "NMF", target =
"missing")
: Generates a random NMF model of the same
dimension as another NMF model.
It is a shortcut for rnmf(x, nrow(x), ncol(x),
...)
, which returns a random NMF model of the same class
and dimensions as x
.
signature(object = "NMF")
: Apply
rposneg
to the basis matrix of an
NMF
object.
signature(object = "NMF")
: Show method
for objects of class NMF
signature(x = "NMF")
: Compute
the sparseness of an object of class NMF
, as the
sparseness of the basis and coefficient matrices computed
separately.
It returns the two values in a numeric vector with names ‘basis’ and ‘coef’.
signature(object = "NMF")
: Computes
summary measures for a single NMF model.
The following measures are computed:
See summary,NMF-method
for more details.
The class NMF
only defines a basic data/low-level
interface for NMF models, as a collection of generic
methods, responsible with data handling, upon which
relies a comprehensive set of functions, composing a rich
higher-level interface.
Actual NMF models are defined as sub-classes that
inherits from class NMF
, and implement the
management of data storage, providing definitions for the
interface's pure virtual methods.
The minimum requirement to define a new NMF model that integrates into the framework of the NMF package are the followings:
Define a class that inherits from class NMF
and implements the new model, say class myNMF
.
Implement the following S4 methods for the new
class myNMF
:
signature(object = "myNMF", value =
"matrix")
: Must return the estimated target matrix as
fitted by the NMF model object
.
signature(object = "myNMF")
: Must
return the basis matrix(e.g. the first matrix factor in
the standard NMF model).
signature(object = "myNMF", value =
"matrix")
: Must return object
with the basis
matrix set to value
.
signature(object = "myNMF")
: Must
return the matrix of mixture coefficients (e.g. the
second matrix factor in the standard NMF model).
signature(object = "myNMF", value =
"matrix")
: Must return object
with the matrix of
mixture coefficients set to value
.
The NMF package provides "pure virtual"
definitions of these methods for class NMF
(i.e.
with signatures (object='NMF', ...)
and
(object='NMF', value='matrix')
) that throw an
error if called, so as to force their definition for
model classes.
Optionally, implement method
rnmf
(signature(x="myNMF", target="ANY")). This
method should call callNextMethod(x=x,
target=target, ...)
and fill the returned NMF model with
its specific data suitable random values.
For concrete examples of NMF models implementations, see
class NMFstd
and its extensions
(e.g. classes NMFOffset
or
NMFns
).
Strictly speaking, because class NMF
is virtual,
no object of class NMF
can be instantiated, only
objects from its sub-classes. However, those objects are
sometimes shortly referred in the documentation and
vignettes as "NMF
objects" instead of "objects
that inherits from class NMF
".
For built-in models or for models that inherit from the
standard model class NMFstd
, the
factory method nmfModel
enables to easily create
valid NMF
objects in a variety of common
situations. See documentation for the the factory method
nmfModel
for more details.
Class NMF
makes it easy to develop new models that
integrate well into the general framework implemented by
the NMF package.
Following a few simple guidelines, new types of NMF
models benefit from all the functionalities available for
the built-in NMF models -- that derive themselves from
class NMF
. See section Implementing NMF
models below.
See NMFstd
, and references and links
therein for details on the built-in implementations of
the standard NMF model and its extensions.
Definition of Nonnegative Matrix Factorization in its modern formulation: Lee et al. (1999)
Historical first definition and algorithms: Paatero et al. (1994)
Lee DD and Seung HS (1999). "Learning the parts of objects by non-negative matrix factorization." _Nature_, *401*(6755), pp. 788-91. ISSN 0028-0836, <URL: http://dx.doi.org/10.1038/44565>, <URL: http://www.ncbi.nlm.nih.gov/pubmed/10548103>.
Paatero P and Tapper U (1994). "Positive matrix factorization: A non-negative factor model with optimal utilization of error estimates of data values." _Environmetrics_, *5*(2), pp. 111-126. <URL: http://dx.doi.org/10.1002/env.3170050203>, <URL: http://www3.interscience.wiley.com/cgi-bin/abstract/113468839/ABSTRACT>.
Main interface to perform NMF in
nmf-methods
.
Built-in NMF models and factory method in
nmfModel
.
Method seed
to set NMF objects with values
suitable to start algorithms with.
Other NMF-interface: basis
,
.basis
, .basis<-
,
basis<-
, coef
,
.coef
, .coef<-
,
coef<-
, coefficients
,
loadings,NMF-method
,
nmfModel
, nmfModels
,
rnmf
, scoef
# roxygen generated flag
options(R_CHECK_RUNNING_EXAMPLES_=TRUE)
# show all the NMF models available (i.e. the classes that inherit from class NMF)
nmfModels()
# show all the built-in NMF models available
nmfModels(builtin.only=TRUE)
# class NMF is a virtual class so cannot be instantiated:
try( new('NMF') )
# To instantiate an NMF model, use the factory method nmfModel. see ?nmfModel
nmfModel()
nmfModel(3)
nmfModel(3, model='NMFns')
Run the code above in your browser using DataLab