R: Non-negative Matrix Factorization

nmf {mlpack} | R Documentation

## Non-negative Matrix Factorization

### Description

An implementation of non-negative matrix factorization. This can be used to decompose an input dataset into two low-rank non-negative components.

### Usage

    nmf(
      input,
      rank,
      initial_h = NA,
      initial_w = NA,
      max_iterations = NA,
      min_residue = NA,
      seed = NA,
      update_rules = NA,
      verbose = FALSE
    )

### Arguments

`input` | Input dataset to perform NMF on (numeric matrix).
`rank` | Rank of the factorization (integer).
`initial_h` | Initial H matrix (numeric matrix).
`initial_w` | Initial W matrix (numeric matrix).
`max_iterations` | Number of iterations before NMF terminates (0 runs until convergence. Default value "10000" (integer).
`min_residue` | The minimum root mean square residue allowed for each iteration, below which the program terminates. Default value "1e-05" (numeric).
`seed` | Random seed. If 0, 'std::time(NULL)' is used. Default value "0" (integer).
`update_rules` | Update rules for each iteration; ( multdist | multdiv | als ). Default value "multdist" (character).
`verbose` | Display informational messages and the full list of parameters and timers at the end of execution. Default value "FALSE" (logical).

### Details

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 the "rank" parameter).

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 the "min_residue" parameter.

### Value

A list with several components:

`h` | Matrix to save the calculated H to (numeric matrix).
`w` | Matrix to save the calculated W to (numeric matrix).

### Author(s)

mlpack developers

### Examples

    # For example, to run NMF on the input matrix "V" using the 'multdist' update
    # rules with a rank-10 decomposition and storing the decomposed matrices into
    # "W" and "H", the following command could be used:

    ## Not run:
    output <- nmf(input=V, rank=10, update_rules="multdist")
    W <- output$w
    H <- output$h

    ## End(Not run)

[Package mlpack version 3.4.2.1 Index]