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!