# libmef – A library for mixtures of exponential families

## Table of Contents

## Description

`libmef`

is a C library allowing to manipulate, learn, simplify and
compare mixtures of exponential families. It is designed to ease the use
of various exponential families in mixture models.

See also jMEF for a Java implementation of the same kind of library and pyMEF for a Python version.

The C implementation allows to easily binds the library to other
languages and thus to put mixtures of exponential families into *your*
application.

## What are exponential families?

An exponential family is a generic set of probability distributions that admit the following canonical distribution:

\[ p_F(x; \theta) = \exp \left( \langle t(x) | \theta \rangle - F(\theta) + k(x) \right) \]

Exponential families are characterized by the log normalizer function F, and include the following well-known distributions: Gaussian (generic, isotropic Gaussian, diagonal Gaussian, rectified Gaussian or Wald distributions, lognormal), Poisson, Bernoulli, binomial, multinomial, Laplacian, Gamma (incl. chi-squared), Beta, exponential, Wishart, Dirichlet, Rayleigh, probability simplex, negative binomial distribution, Weibull, von Mises, Pareto distributions, skew logistic, etc.

Mixtures of exponential families provide a generic framework for handling Gaussian mixture models (GMMs also called MoGs for mixture of Gaussians), mixture of Poisson distributions, and Laplacian mixture models as well.

## Documentation

### Algorithms

- Bregman Soft Clustering
- Bregman Hard Clustering (soon)
- Kernel Density Estimator (soon)
- \(k\)-MLE
- \(k\)-MLE for Gamma mixtures
- \(k\)-MLE for generalized Gaussian mixtures
- Gaussian EM
- Gamma EM

### Families

- Univariate Gaussian
- Gamma
- Generalized Gaussian

Do not hesitate to contribute with your own family (tutorial to come)

### Examples

See the `examples/`

sub-directory inside the sources or browse
online at http://hub.darcs.net/oschwand/libmef/examples.

## Installation

### Downloads

- libmef-0.1.tar.gz (as used in the SIMBAD 2013 paper)

### Darcs repository

- Get:
`darcs get http://www.lix.polytechnique.fr/~schwander/darcs/libmef/`

- Browse: http://hub.darcs.net/oschwand/libmef

### Compilation

You will need cmake and the GNU Scientific Library in order to compile
`libmef`

.

cmake . make cd examples; make # for the examples

## Bibliography

- Olivier Schwander and Frank Nielsen,
**Fast learning of Gamma mixture models with k-MLE**, SIMBAD 2013 - Olivier Schwander, Frank Nielsen, AurĂ©lien Schutz and Yannick
Berthoumieu,
**k-MLE for mixtures of generalized Gaussians**, , ICPR 2012 - Olivier Schwander and Frank Nielsen,
**Learning Mixtures by Simplifying Kernel Density Estimators**, in Matrix Information Geometry, Springer, 2012 - Olivier Schwander and Frank Nielsen,
**pyMEF - A framework for Exponential Families in Python**, in**Proceedings of the 2011 IEEE Workshop on Statistical Signal Processing** - Vincent Garcia, Frank Nielsen, and Richard Nock,
**Levels of details for Gaussian mixture models**, in**Proceedings of the Asian Conference on Computer Vision, Xi'an, China, September 2009** - Frank Nielsen and Vincent Garcia,
**Statistical exponential families: A digest with flash cards**, arXiV, http://arxiv.org/abs/0911.4863, November 2009 - Frank Nielsen and Richard Nock,
**Sided and symmetrized Bregman centroids**, in**IEEE Transactions on Information Theory, 2009, 55, 2048-2059** - Frank Nielsen, Jean-Daniel Boissonnat and Richard Nock,
**On Bregman Voronoi diagrams**, in**ACM-SIAM Symposium on Data Mining, 2007, 746-755** - A. Banerjee, S. Merugu, I. Dhillon, and J. Ghosh,
**Clustering with Bregman divergences**, in**Journal of Machine Learning Research, 2005, 6, 234-245**

## Contacts

Please send any comment or bug report to Olivier Schwander.