rnmf: Generating Random NMF Models

Description Usage Arguments Details Value Methods (by generic) See Also Examples

Description

Generates NMF models with random values drawn from a uniform distribution. It returns an NMF model with basis and mixture coefficient matrices filled with random values. The main purpose of the function rnmf is to provide a common interface to generate random seeds used by the nmf function.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
rnmf(x, target, ...)

## S4 method for signature 'NMFOffset,numeric'
rnmf(x, target, ...)

## S4 method for signature 'NMF,numeric'
rnmf(x, target, ncol = NULL, keep.names = TRUE, dist = runif)

## S4 method for signature 'ANY,mMatrix'
rnmf(
  x,
  target,
  ...,
  dist = list(max = max(max(target, na.rm = TRUE), 1)),
  use.dimnames = TRUE
)

## S4 method for signature 'ANY,data.frame'
rnmf(x, target, ...)

## S4 method for signature 'NMF,missing'
rnmf(x, target, ...)

## S4 method for signature 'numeric,missing'
rnmf(x, target, ..., W, H, dist = runif)

## S4 method for signature 'missing,missing'
rnmf(x, target, ..., W, H)

## S4 method for signature 'numeric,numeric'
rnmf(x, target, ncol = NULL, ..., dist = runif)

## S4 method for signature 'formula,ANY'
rnmf(x, target, ..., dist = runif)

Arguments

x

an object that determines the rank, dimension and/or class of the generated NMF model, e.g. a numeric value or an object that inherits from class NMF. See the description of the specific methods for more details on the supported types.

target

optional specification of target dimensions. See section Methods for how this parameter is used by the different methods.

...

extra arguments to allow extensions and passed to the next method eventually down to nmfModel, where they are used to initialise slots that are specific to the instantiating NMF model.

ncol

single numeric value that specifies the number of columns of the coefficient matrix. Only used when target is a single numeric value.

keep.names

a logical that indicates if the dimension names of the original NMF object x should be conserved (TRUE) or discarded (FALSE).

dist

specification of the random distribution to use to draw the entries of the basis and coefficient matrices. It may be specified as:

  • a function which must be a distribution function such as e.g. runif that is used to draw the entries of both the basis and coefficient matrices. It is passed in the dist argument of rmatrix.

  • a list of arguments that are passed internally to rmatrix, via do.call('rmatrix', dist).

  • a character string that is partially matched to ‘basis’ or ‘coef’, that specifies which matrix in should be drawn randomly, the other remaining as in x – unchanged.

  • a list with elements ‘basis’ and/or ‘coef’, which specify the dist argument separately for the basis and coefficient matrix respectively.

    These elements may be either a distribution function, or a list of arguments that are passed internally to rmatrix, via do.call('rmatrix', dist$basis) or do.call('rmatrix', dist$coef).

use.dimnames

a logical that indicates whether the dimnames of the target matrix should be set on the returned NMF model.

W

value for the basis matrix. data.frame objects are converted into matrices with as.matrix.

H

value for the mixture coefficient matrix data.frame objects are converted into matrices with as.matrix.

Details

If necessary, extensions of the standard NMF model or custom models must define a method "rnmf,<NMF.MODEL.CLASS>,numeric" for initialising their specific slots other than the basis and mixture coefficient matrices. In order to benefit from the complete built-in interface, the overloading methods should call the generic version using function callNextMethod, prior to set the values of the specific slots. See for example the method rnmf defined for NMFOffset models: showMethods(rnmf, class='NMFOffset', include=TRUE)).

For convenience, shortcut methods for working on data.frame objects directly are implemented. However, note that conversion of a data.frame into a matrix object may take some non-negligible time, for large datasets. If using this method or other NMF-related methods several times, consider converting your data data.frame object into a matrix once for good, when first loaded.

Value

An NMF model, i.e. an object that inherits from class NMF.

Methods (by generic)

See Also

rmatrix

Other NMF-interface: NMF-class, basis(), nmfModel()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# random NMF model with offset
x <- rnmf(2, 3, model='NMFOffset')
x
offset(x)
# from a matrix
x <- rnmf(2, rmatrix(5,3, max=10), model='NMFOffset')
offset(x)


## random NMF of same class and rank as another model

x <- nmfModel(3, 10, 5)
x
rnmf(x, 20) # square
rnmf(x, 20, 13)
rnmf(x, c(20, 13))

# using another distribution
rnmf(x, 20, dist=rnorm) 

# other than standard model
y <- rnmf(3, 50, 10, model='NMFns')
y



# random NMF compatible with a target matrix
x <- nmfModel(3, 10, 5)
y <- rmatrix(20, 13)
rnmf(x, y) # rank of x
rnmf(2, y) # rank 2

## random NMF from another model

a <- nmfModel(3, 100, 20)
b <- rnmf(a)


# random NMF model with known basis matrix
x <- rnmf(5, W=matrix(1:18, 6)) # 6 x 5 model with rank=3
basis(x) # fixed 
coef(x) # random

# random NMF model with known coefficient matrix
x <- rnmf(5, H=matrix(1:18, 3)) # 5 x 6 model with rank=3 
basis(x) # random
coef(x) # fixed

# random model other than standard NMF
x <- rnmf(5, H=matrix(1:18, 3), model='NMFOffset')
basis(x) # random
coef(x) # fixed
offset(x) # random


# random model other than standard NMF
x <- rnmf(W=matrix(1:18, 6), H=matrix(21:38, 3), model='NMFOffset')
basis(x) # fixed
coef(x) # fixed
offset(x) # random


## random standard NMF of given dimensions

# generate a random NMF model with rank 3 that fits a 100x20 matrix  
rnmf(3, 100, 20)

# generate a random NMF model with rank 3 that fits a 100x100 matrix
rnmf(3, 100)

renozao/NMF documentation built on June 14, 2020, 9:35 p.m.