Non-negative matrix factorization (NMF) is an algorithm based on the factorization of a non-negative data matrix X
in two non-negative factors, A and S, such that X = AS. It allows for unsupervised separation of source signals and is used
for various purposes such as dimensionality reduction, feature selection, classification, and deconvolution of data
generated by mixing several sources. The project's main aim was the development of the NMF based on Moussaoui et al.
(2006) and then investigating this algorithm's behavior. There were a lot of challenges while translating the equation to
code, as the paper contained various mistakes in the equations, which were corrected after certain research. During this
project, Gibbs sampling was constructed for sampling the signals. The performance of the Gibbs sampler was accessed
using methods like convergence plots which showed that the convergence of the sampler was very slow and hence it is an
inefficient sampler. The project mainly revolves around the equation X = AS + E, where A, S, and E are mixing
coefficients, source signals, and noise signals. NMF in a Bayesian framework has been discussed in the document. Also, the
Markov chain Monte Carlo method has been derived to estimate their posterior density based on a Gibbs sampling
procedure. For the creation of non-negative sources, gamma distribution was used. A Markov chain Monte Carlo
(MCMC) sampling process is provided to simulate the resultant joint posterior density, from which marginal posterior
mean estimates of the source signals and mixing coefficients are derived. This document contains the proper explanation of
the methods followed to accomplish the project.