Chapter 47. Nonnegative Matrix Factorization (.NET, C#, CSharp, VB, Visual Basic, F#)
Nonnegative matrix factorization (NMF) approximately factors a matrix V into two matrices, W and H:
NMF differs from many other factorizations by enforcing the constraint that the factors W and H must be non-negative—that is, all elements must be equal to or greater than zero.
If a set of m n-dimensional data vectors are placed in an n x m matrix V, then NMF can be used to approximately factor V into an n x r matrix W and an r x m matrix H. Usually r is chosen to be much smaller than either m or n, so that W and H are smaller than the original matrix V. Thus, each column v of V is approximated by a linear combination of the columns of W, with the coefficients being the corresponding column h of H, v ≈ Wh. This extracts underlying features of the data as basis vectors in W, which can then be used for identification, classification, and compression. By not allowing negative entries in W and H, NMF enables a non-subtractive combination of the parts to form a whole.
NMath Stats provides classes for basic NMF, and for data clustering using NMF. This chapter describes how to use the NMF classes.