/DPPy

Python library for sampling Determinantal Point Processes

Primary LanguagePythonMIT LicenseMIT

Documentation Status Build Status

DPPy: Sampling Determinantal Point Processes with Python

Anything that can go wrong, will go wrong. − Murphy's Law

Introduction

Determinantal point processes (DPPs) are specific probability distributions over clouds of points that have been popular as models or computational tools across physics, probability, statistics, and more recently of booming interest in machine learning. Sampling from DPPs is a nontrivial matter, and many approaches have been proposed. DPPy is a Python library that puts together all exact and approximate sampling algorithms for DPPs.

Requirements

DPPy works with Python 3.4+

Dependencies

The zono_sampling mcmc sampler for finite DPPs requires CVXOPT which itself requires GCC

  • CVXOPT
  • GCC
    • On MAC it comes with Xcode
    • On UNIX, use your package manager (apt, yum etc)
      sudo apt install -qq gcc g++

Download

Install from sources

Clone this repository

git clone https://github.com/guilgautier/DPPy.git
cd DPPy

And execute setup.py

pip install .

How to cite this work?

We wrote a companion paper to DPPy for latter submission to the MLOSS track of JMLR.

The companion paper is available on: - arXiv - GitHub, see the arxiv branch

If you use this package, please consider citing it with this piece of BibTeX

@article{GaBaVa18,,
    archivePrefix = {arXiv},
    arxivId = {1809.07258},
    author = {Gautier, Guillaume and Bardenet, R{\'{e}}mi and Valko, Michal},
    eprint = {1809.07258},
    journal = {ArXiv e-prints},
    title = {{DPPy: Sampling Determinantal Point Processes with Python}},
    keywords = {Computer Science - Machine Learning, Computer Science - Mathematical Software, Statistics - Machine Learning},
    url = {http://arxiv.org/abs/1809.07258},
    year = {2018},
    note = {Code at http://github.com/guilgautier/DPPy/ Documentation at http://dppy.readthedocs.io/}
}

Reproducibility

We would like to thank Guillermo Polito for leading our reproducible research workgroup, this project owes him a lot.

Take a look at the corresponding booklet to learn more on how to make your research reproducible!