Learn R Programming

mlpack (version 3.4.2)

nmf: 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).

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).

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.

Examples

Run this code
# NOT RUN {
# 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
# }

Run the code above in your browser using DataLab