Skip to content

v0.2.1

Latest
Compare
Choose a tag to compare
@eozd eozd released this 29 May 14:02
· 1 commit to master since this release

bnmf-algs v0.2.1

In this release we implement a new parallel expectation-maximization algorithm and provide parallelizations to all BLD algorithms. Additionally, new allocation model utility functions and bugfixes are provided.

Highlights

  • A new expectation-maximization algorithm, online_EM, that performs matrix completion while inferring the hidden tensor S from the dataset. This new EM algorithm never explicitly stores S tensor itself, only its marginals along 3 axes; therefore, its memory footprint is much smaller than BLD algorithms. For this reason, it generally runs faster, as well.
  • All BLD and EM algorithms are now parallelized using OpenMP. Sampling-based algorithms still remain sequential due to their very short running times.
  • A new allocation model utility function called total_log_marginal that computes p(X|v) = \sum_S p(X|S)p(S|v) where v are the model parameters. total_log_marginal can be used for model selection purposes by finding the likelihood of the matrix X with respect to the given model parameters, including the model order (rank). However, this function calculates an exact sum; therefore, it has exponential time complexity and scales very badly for matrices greater than 4x4. In the upcoming releases, we intend to provide a Variational Bayes algorithm to perform this computation in a reasonable amount of time.
  • Various utility functions with some of them being:
    • multinomial_mode: Compute the mode of a multinomial distribution using Finucan's algorithm.
    • all_partitions: Compute all partitions of an integer N to K bins. Consecutive partitions differ only by 1 in two bins.
    • partition_change_indices: Compute all increment and decrement indices to apply to an existing partition to generate a new partition.