Adaptive Iterative Mechanism (AIM)#

AIM is a workload-adaptive algorithm, within the paradigm of algorithms that first selects a set of queries, then privately measures those queries, and finally generates synthetic data from the noisy measurements. It uses a set of innovative features to iteratively select the most useful measurements, reflecting both their relevance to the workload and their value in approximating the input data. AIM consistently outperforms a wide variety of existing mechanisms across a variety of experimental settings.

Before using AIM, install Private-PGM :

pip install git+https://github.com/ryan112358/private-pgm.git

And call like this:

import pandas as pd
from snsynth import Synthesizer

pums = pd.read_csv("PUMS.csv")

synth = Synthesizer.create("aim", epsilon=3.0, verbose=True)
synth.fit(pums, preprocessor_eps=1.0)
pums_synth = synth.sample(1000)

Parameters#

class snsynth.aim.aim.AIMSynthesizer(epsilon=1.0, delta=1e-09, max_model_size=80, degree=2, num_marginals=None, max_cells=10000, rounds=None, verbose=False)[source]#

AIM: An Adaptive and Iterative Mechanism

Parameters
  • epsilon (float) – privacy budget for the synthesizer

  • delta (float) – privacy parameter. Should be small, in the range of 1/(n * sqrt(n))

  • verbose (bool) – print diagnostic information during processing

  • max_cells (int) –

Based on the code available in: https://github.com/ryan112358/private-pgm/blob/master/mechanisms/aim.py