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