Multiplicative updates from Lee et al. (2001) for
standard Nonnegative Matrix Factorization models *V
\approx W H*, where the distance between the target
matrix and its NMF estimate is measured by the
Kullback-Leibler divergence.

`nmf_update.KL.w`

and `nmf_update.KL.h`

compute
the updated basis and coefficient matrices respectively.
They use a *C++* implementation which is optimised
for speed and memory usage.

`nmf_update.KL.w_R`

and `nmf_update.KL.h_R`

implement the same updates in *plain R*.

1 2 3 4 5 6 7 8 9 | ```
nmf_update.KL.h(v, w, h, nbterms = 0L, ncterms = 0L,
copy = TRUE)
nmf_update.KL.h_R(v, w, h, wh = NULL)
nmf_update.KL.w(v, w, h, nbterms = 0L, ncterms = 0L,
copy = TRUE)
nmf_update.KL.w_R(v, w, h, wh = NULL)
``` |

`v` |
target matrix |

`w` |
current basis matrix |

`h` |
current coefficient matrix |

`nbterms` |
number of fixed basis terms |

`ncterms` |
number of fixed coefficient terms |

`copy` |
logical that indicates if the update should
be made on the original matrix directly ( |

`wh` |
already computed NMF estimate used to compute the denominator term. |

The coefficient matrix (`H`

) is updated as follows:

* H_kj <- H_kj ( sum_i [ W_ik V_ij / (WH)_ij ] ) / (
sum_i W_ik ) *

These updates are used in built-in NMF algorithms
`KL`

and
`brunet`

.

The basis matrix (`W`

) is updated as follows:

* W_ik <- W_ik (
sum_u [H_kl A_il / (WH)_il ] ) / ( sum_l H_kl ) *

a matrix of the same dimension as the input matrix to
update (i.e. `w`

or `h`

). If `copy=FALSE`

,
the returned matrix uses the same memory as the input
object.

Update definitions by Lee2001.

C++ optimised implementation by Renaud Gaujoux.

Lee DD and Seung H (2001). "Algorithms for non-negative matrix factorization." _Advances in neural information processing systems_. <URL: http://scholar.google.com/scholar?q=intitle:Algorithms+for+non-negative+matrix+factorization\#0>.

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.