/regularized-dpp

Implementation of Bayesian experimental design using regularized determinantal point processes

Primary LanguageJupyter Notebook

Bayesian experimental design using regularized determinantal point processes

Intro

This repo provides implementation of the method proposed in "Bayesian experimental design using regularized determinantal point processes" [arxiv]

You can run a Colab notebook: Open In Colab

Installation

conda create -n regdpp python=3.9
conda activate regdpp
pip install poetry
poetry install
chmod +x **.sh
./get_data.sh

To obtain optimal weights for method with SDP we use cvxpy.MOSEK solver, which requires license. The official cite provides academic license. You can try using another solver (e.g. cvxpy.SCS).

Usage

python regdpp/main.py configs/[dataset_name].yaml

To reproduce all the experiments:

python ./runs/run.sh

General usage:

from regdpp.metrics import A_opt_criterion
from regdpp.sample import SamplerRegistry
from regdpp.sdp import get_optimal_weights

# X - n x d data matrix
# A - d x d precision matrix

n, d = X.shape
k = 2 * d   # size of set of indices to choose
sampler = SamplerRegistry.create_sampler("RegDPP", **{"sdp"=True})  # define a sampler
S = sampler(X, A, k)
value = A_opt_criterion(X[S].T @ X[S], A) # get A-optimality value

Example

mg_scale

Dependence of A-optimality value on size $k$ A-optimality value devided by baseline Time comparison

bodyfat_scale

Dependence of A-optimality value on size $k$ A-optimality value devided by baseline Time comparison

space_ga_scale

Dependence of A-optimality value on size $k$ A-optimality value devided by baseline Time comparison

Citing

@InProceedings{pmlr-v108-derezinski20a,
  title = 	 {Bayesian experimental design using regularized determinantal point processes},
  author =       {Derezinski, Michal and Liang, Feynman and Mahoney, Michael},
  booktitle = 	 {Proceedings of the Twenty Third International Conference on Artificial Intelligence and Statistics},
  pages = 	 {3197--3207},
  year = 	 {2020},
  editor = 	 {Chiappa, Silvia and Calandra, Roberto},
  volume = 	 {108},
  series = 	 {Proceedings of Machine Learning Research},
  month = 	 {26--28 Aug},
  publisher =    {PMLR},
  pdf = 	 {http://proceedings.mlr.press/v108/derezinski20a/derezinski20a.pdf},
  url = 	 {https://proceedings.mlr.press/v108/derezinski20a.html}
}