Quailified Architecture to Improve Labeling (QUAIL)

The QUAIL synthesizer combines a differentially private classifier and a differentially private synthesizer to produce synthetic data that can perform well on both classification and analytics tasks. The synthesizer first fits a differentially private classifier on the private data, to produce a model that can predict the labels from the other columns of the data. The synthesizer then uses a differentially private synthesizer to learn the distribution of the feature columns from the private data. Synthetic data is then generated by sampling feature rows from the fitted synthesizer, and generating labels using the previously learned classifier. With this hybrid approach, the analyst can control how much privacy budget to spend on classifiication versus learning the feature distribution.

QUAIL is described in Differentially Private Synthetic Data: Applied Evaluations and Enhancements.

Parameters

class snsynth.quail.QUAILSynthesizer(epsilon, dp_synthesizer, dp_classifier, target, test_size=0.2, seed=None, eps_split=0.9)[source]

Quailified Architecture to Improve Labeling. Divide epsilon in a known classification task between a differentially private synthesizer and classifier. Train DP classifier on real, fit DP synthesizer to features (excluding the target label), and use synthetic data from the DP synthesizer with the DP classifier to create artificial labels. Produces complete synthetic data.

More information here: Differentially Private Synthetic Data: Applied Evaluations and Enhancements https://arxiv.org/abs/2011.05537

Parameters
  • epsilon (float) – Total epsilon used across the DP Synthesizer and DP Classifier

  • dp_synthesizer (function (epsilon) -> SDGYMBaseSynthesizer) – A function that returns an instance of a DP Synthesizer for a specified epsilon value

  • dp_classifier (function (epsilon) -> classifier) – A function that returns an instance of a DP Classifier for a specified epsilon value

  • target (str) – The column name of the target column

  • test_size (float, optional) – Percent of the data that should be used for the test set, defaults to 0.2

  • seed (int, optional) – Seed for controlling randomness for testing, defaults to None

  • eps_split (float, optional) – Percent of epsilon used for the classifier. 1 - eps_split is used for the Synthesizer., defaults to 0.9