nmfdiv {fabia} | R Documentation

## Non-negative Matrix Factorization: Kullback-Leibler Divergence

### Description

`nmfdiv`: R implementation of `nmfdiv`.

### Usage

    nmfdiv(X,p=5,cyc=100)

### Arguments

`X` | the data matrix.
`p` | number of hidden factors = number of biclusters; default = 5.
`cyc` | maximal number of iterations; default = 100.

### Details

Non-negative Matrix Factorization represents positive matrix X by positive matrices L and Z.

Objective for reconstruction is Kullback-Leibler divergence.

Essentially the model is the sum of outer products of vectors:

X = ∑_{i=1}^{p} λ_i z_i^T

where the number of summands p is the number of biclusters. The matrix factorization is

X = L Z

Here λ_i are from R^n, z_i from R^l, L from R^{n \times p}, Z from R^{p \times l}, and X from R^{n \times l}.

The model selection is performed according to D. D. Lee and H. S. Seung, 1999, 2001.

The code is implemented in R.

### Value

`` | object of the class `Factorization`. Containing `LZ` (estimated noise free data L Z), `L` (loading L), `Z` (factors Z), `U` (noise X-LZ), `X` (scaled data X).

### Author(s)

Sepp Hochreiter

### References

D. D. Lee and H. S. Seung, ‘Algorithms for non-negative matrix factorization’, In Advances in Neural Information Processing Systems 13, 556-562, 2001.

D. D. Lee and H. S. Seung, ‘Learning the parts of objects by non-negative matrix factorization’, Nature, 401(6755):788-791, 1999.

### See Also

`fabia`, `fabias`, `fabiap`, `fabi`, `fabiasp`, `mfsc`, `nmfdiv`, `nmfeu`, `nmfsc`, `extractPlot`, `extractBic`, `plotBicluster`, `Factorization`, `projFuncPos`, `projFunc`, `estimateMode`, `makeFabiaData`, `makeFabiaDataBlocks`, `makeFabiaDataPos`, `makeFabiaDataBlocksPos`, `matrixImagePlot`, `fabiaDemo`, `fabiaVersion`

### Examples

    #---------------
    # TEST
    #---------------

    dat <- makeFabiaDataBlocks(n = 100,l= 50,p = 3,f1 = 5,f2 = 5,
      of1 = 5,of2 = 10,sd_noise = 3.0,sd_z_noise = 0.2,mean_z = 2.0,
      sd_z = 1.0,sd_l_noise = 0.2,mean_l = 3.0,sd_l = 1.0)

    X <- dat[[1]]
    Y <- dat[[2]]
    X <- abs(X)

    resEx <- nmfdiv(X,3)

    ## Not run:
    #---------------
    # DEMO
    #---------------

    dat <- makeFabiaDataBlocks(n = 1000,l= 100,p = 10,f1 = 5,f2 = 5,
      of1 = 5,of2 = 10,sd_noise = 3.0,sd_z_noise = 0.2,mean_z = 2.0,
      sd_z = 1.0,sd_l_noise = 0.2,mean_l = 3.0,sd_l = 1.0)

    X <- dat[[1]]
    Y <- dat[[2]]
    X <- abs(X)

    resToy <- nmfdiv(X,13)

    extractPlot(resToy,ti="NMFDIV",Y=Y)

    ## End(Not run)

[Package fabia version 2.32.0 Index]