Non-Negative Matrix Factorization

This page contains an optimized C implementation of the Non-Negative Matrix Factorization (NMF) algorithm, described in [Lee & Seung 2001]. We implement the update rules that minimize a weighted SSD error metric. A detailed description of weighted NMF can be found in [Peers et al. 2006].

The performance of NMF is greatly improved by using BLAS routines for basic matrix operations. In paricular, I recommend Intel's Math Kernel Library.

Feel free to use, abuse and modify this code in any way, but do so at your own risk. Also, I'd like to hear about any interesting projects that make use of this implementation.

Download: nmf.tar.gz