/Non-Negative-Matrix-factorization---Implemented-in-python

This repository provides Python implementations for Non-negative Matrix Factorization (NMF) using the Multiplicative Update (MU) algorithm. Two initialization methods are supported: random initialization and Non-negative Double Singular Value Decomposition (NNDSVD). NMF is a matrix factorization technique used in various fields, including topic mod

Primary LanguageJupyter Notebook

NMF Algorithm

Non-negative Matrix Factorization (NMF) is a family of linear algebra algorithms used for identifying the latent structure within data represented as a non-negative matrix. Link to the YouTube tutorial



Input: matrix A; rank k.
Output: Two k-dimensional factors W and H approximating A
So our Objective function looks like this:



There are several approaches to solving this minimization Problem. I used Multiplicative Update Method
introduced by Lee and Seung in 1999. (This Paper)

NNDSVD Method

As the Multiplicative Update is an iterative method, It is very sensitive to initializations of W and H.
NNDSVD Method is an SVD-based initialization, introduced by C. Boutsidis and E. Gallopoulos in 2007 (This Paper)