# mlpack_nmf man page

**mlpack_nmf** — non-negative matrix factorization

## Synopsis

mlpack_nmf[-h] [-v]-Hstring-istring-rint-Wstring[-mint] [-edouble] [-sint] [-ustring]-V

## Description

This program performs non-negative matrix factorization on the given dataset, storing the resulting decomposed matrices in the specified files. For an input dataset V, NMF decomposes V into two matrices W and H such that

V = W * H

where all elements in W and H are non-negative. If V is of size (n x m), then W will be of size (n x r) and H will be of size (r x m), where r is the rank of the factorization (specified by **--rank**).

Optionally, the desired update rules for each NMF iteration can be chosen from the following list:

- multdist: multiplicative distance-based update rules (Lee and Seung 1999)
- multdiv: multiplicative divergence-based update rules (Lee and Seung 1999)
- als: alternating least squares update rules (Paatero and Tapper 1994)

The maximum number of iterations is specified with **--max_iterations**, and the minimum residue required for algorithm termination is specified with **--min_residue**.

## Required Options

**--h_file (-H) [***string*]File to save the calculated H matrix to.

**--input_file (-i) [***string*]Input dataset to perform NMF on.

**--rank (-r) [***int*]Rank of the factorization.

**--w_file (-W) [***string*]File to save the calculated W matrix to.

## Options

**--help (-h)**Default help info.

**--info [***string*]Get help on a specific module or option. Default value ''.

**--max_iterations (-m) [***int*]Number of iterations before NMF terminates (0 runs until convergence. Default value 10000.

**--min_residue (-e) [***double*]The minimum root mean square residue allowed for each iteration, below which the program terminates. Default value 1e-05.

**--seed (-s) [***int*]Random seed. If 0, 'std::time(NULL)' is used. Default value 0.

**--update_rules**(**-u**) [*string*] Update rules for each iteration; ( multdist | multdiv | als ). Default value 'multdist'.**--verbose (-v)**Display informational messages and the full list of parameters and timers at the end of execution.

**--version (-V)**Display the version of mlpack.

## Additional Information

For further information, including relevant papers, citations, and theory, consult the documentation found at http://www.mlpack.org or included with your DISTRIBUTION OF MLPACK.