Learn R Programming

fabia (version 2.18.0)

nmfeu: Non-negative Matrix Factorization: Euclidean Distance

Description

nmfeu: Rimplementation of nmfeu.

Usage

nmfeu(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.

Value

  • object of the class Factorization. Containing LZ (estimated noise free data $L Z$), L (loadings $L$), Z (factors $Z$), U (noise $X-LZ$), X (scaled data $X$).

concept

  • sparse coding
  • non-negative matrix factorization

Details

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

Objective for reconstruction is Euclidean distance.

Essentially the model is the sum of outer products of vectors: $$X = \sum_{i=1}^{p} \lambda_i z_i^T$$ where the number of summands $p$ is the number of biclusters. The matrix factorization is $$X = L Z$$

Here $\lambda_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, 2001.

The code is implemented in R.

References

Paatero, P and Tapper, U, Least squares formulation of robust non-negative factor analysis, Chemometr. Intell. Lab. 37: 23-35, 1997.

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

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

Run this code
#---------------
# 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 <- nmfeu(X,3)


#---------------
# 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 <- nmfeu(X,13)

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

Run the code above in your browser using DataLab