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 KullbackLeibler 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 builtin 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 nonnegative matrix factorization." _Advances in neural information processing systems_. <URL: http://scholar.google.com/scholar?q=intitle:Algorithms+for+nonnegative+matrix+factorization\#0>.
Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.