Skip to content

localmin/NMF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Non-negative Matrix Factorization(NMF)

Non-negative Matrix Factorization(NMF) by multiplicative update & Greedy Coordinate Descent(GCD) written in Octave.

Features

You can execute NMF easily on Octave(of course MATLAB).

Using algorithm is multiplicative update rule on Euclid distance(EU), KL-divergence & IS(Itakura-Saito) divergence criterions.

Background of NMF

You should read the following articles.

Usage

./exc_nmf.m

Default Setting

  • This default program execute a simulation by real number. If you want to deal with real data, change codes, for example, "parameter_setting.m", "input_data.m" etc., for your use.

  • size of random non-negative observation matrix: (18,30)

  • numbers of basis vectors: 4

  • numbers of iterations: 200

  • initial value setting method of update rules: random non-negative values

You can change these default settings on "parameter_setting.m" like the following,

% size of observation matrix
I = 18; J = 30; 
% number of basis vectors
K = 4; 
% iteration numbers
itr = 200; 

Data that you want to use can be also changed on "input_data.m"

Initial value setting can be changed on each functions, "EU.m KL.m & IS.m"

% random initialization
T = abs(randn( I, K ));
V = abs(randn( K, J ));

Plans of additional features

  • other algorithms

    • GCD( on EU )
    • HALS( on EU )
    • sBCD( on KL & IS )
    • CCD ( on KL )
  • results visualization(ex. graph)

    • error with regard to time
    • final values of cost functions & relative error of NMF
  • speed up

    • mex
    • brush up algorithms

This code is provided without liability and warranty.

About

Non-negative Matrix Factorization(NMF) written in Octave

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages