A proof-of-concept numerical simulation demonstrating the effectiveness of 1 public sample in private mean estimation.
This code is referenced in our NeurIPS 2022 paper:
Private Estimation with Public Data by Alex Bie*, Gautam Kamath*, Vikrant Singhal* (*alphabetical order).
Tested on Python 3.10.6.
- Install required packages:
pip install -r requirements.txt
- Reproduce the figures in the paper:
python run.py
- Figures will be dumped into
./plots/*.png
Targeting zCDP at ρ = 0.5, we examine the effect of 1 public sample on CoinPress (an existing private mean estimator) on n samples from N(k * [1,...,1]T, Id), d = 50. We use R = k*sqrt(d) as the a priori upper bound on the mean for CoinPress.
Left to Right: k = 10, k = 100, k = 1000. We see that 1 public sample significantly improves results when the a priori bound on the mean is weak (k is large).
Left to Right: k = 100 (zoomed-in), k = 1000 (zoomed-in).
This code makes heavy use of the original authors' implementation of CoinPress.
See their paper for more details about CoinPress:
CoinPress: Practical Private Mean and Covariance Estimation by Sourav Biswas, Yihe Dong, Gautam Kamath, Jonathan Ullman.