nmf: Non-negative Matrix Factorization

View source: R/nmf.R

nmfR 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 = getOption("mlpack.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 "getOption("mlpack.verbose", 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)

mlpack documentation built on Oct. 5, 2024, 9:08 a.m.

Related to nmf in mlpack...