Evidence for privacy and compliance teams
Your first question: Can anyone learn from the synthetic rows whether a person was in my data, or what their values were?
Short answer, from one benchmark run on six public tables: the strongest of four membership attacks reached an AUC of 0.50–0.55 against Ground's rows (0.5 is a coin flip; Ground flags anything above 0.6 for review), synthetic rows were closer to a training row than to an unseen one 47.2%–52.1% of the time (about 50% means no memorisation), and no synthetic row copied a rare real record. These are measured attacks, not a guarantee. A formal guarantee needs differential privacy, which costs fidelity (below).
Membership attacks
Best membership-inference AUC across four attacks
Distance, density ratio (DOMIAS), neighbourhood (Monte Carlo) and classifier attacks; the highest AUC is shown. The line is 0.5, no signal. Ground flags above 0.6. Lower is better.
| Dataset | Ground | Ground (DP ε=3) | Ground (DP ε=3, MST) |
|---|---|---|---|
| Adult | 0.519 | 0.510 | 0.504 |
| Bank | 0.512 | 0.502 | 0.511 |
| Credit | 0.516 | 0.519 | 0.554 |
| Telco | 0.524 | 0.525 | 0.519 |
| Housing | 0.516 | 0.521 | 0.519 |
| Insurance | 0.507 | 0.548 | 0.498 |
| Measure | Value |
|---|---|
| TPR at 1% FPR, strongest attack | pending first independent run |
The report computes TPR at 1% FPR for every attack on every dataset (it flags anything above 5%), but the published benchmark run recorded only the AUC, so the low-false-positive number is pending first independent run. AUC averages over all thresholds and can hide an attack that is very sure about a few people; TPR at low FPR is the number to ask for.
Distance to closest record, copies and inference
| Dataset, method | DCR share | Rare copies | Attribute inference | Singling out |
|---|---|---|---|---|
| Adult, Ground | 50.7% | 0 | 0.049 | 0.008 |
| Adult, Ground (DP ε=3) | 47.8% | 0 | 0.010 | 0.000 |
| Adult, Ground (DP ε=3, MST) | 47.2% | 0 | 0.000 | 0.000 |
| Bank, Ground | 47.9% | 0 | 0.018 | 0.003 |
| Bank, Ground (DP ε=3) | 48.9% | 0 | 0.019 | 0.008 |
| Bank, Ground (DP ε=3, MST) | 49.6% | 0 | 0.040 | 0.000 |
| Credit, Ground | 51.8% | 0 | 0.063 | 0.000 |
| Credit, Ground (DP ε=3) | 52.1% | 0 | 0.000 | 0.000 |
| Credit, Ground (DP ε=3, MST) | 51.8% | 0 | 0.000 | 0.026 |
| Telco, Ground | 52% | 0 | 0.071 | 0.000 |
| Telco, Ground (DP ε=3) | 50.1% | 0 | 0.051 | 0.013 |
| Telco, Ground (DP ε=3, MST) | 49.4% | 0 | 0.000 | 0.037 |
| Housing, Ground | 48.8% | 0 | 0.080 | 0.017 |
| Housing, Ground (DP ε=3) | 49% | 0 | 0.000 | 0.020 |
| Housing, Ground (DP ε=3, MST) | 51.9% | 0 | 0.080 | 0.000 |
| Insurance, Ground | 51.9% | 0 | 0.000 | 0.000 |
| Insurance, Ground (DP ε=3) | 49.7% | 0 | 0.064 | 0.028 |
| Insurance, Ground (DP ε=3, MST) | 51.4% | 0 | 0.000 | 0.000 |
- How it was measured
- Each table is split 80/20 with seed 7; the synthesizer sees only the 80%. Attacks try to tell those training rows from the unseen 20% using the synthetic rows. DCR share: synthetic rows closer to a training row than to a holdout row (about 50% is ideal, above 60% flags review). Attribute inference and singling out are Anonymeter-style excess risks of training over holdout rows (above 0.1 flags review).
- Uncertainty
- One run per table with fixed seeds; no confidence intervals. Attack AUCs within a few hundredths of 0.5 are indistinguishable from chance at these sizes.
- Scored by
- Ground's own report (self-scored). Independent attack implementations are pending first independent run.
- Raw output
- benchmark-results.json · evidence.json
- Source
apps/web/lib/benchmark-results.json; docs/benchmarks.md
Canary records
The canary audit plants made-up records, refits the same kind of model, and checks whether the output gives them away. It reports the attack AUC on the canaries and an empirical lower bound on ε (Clopper–Pearson 95%). On the public tables: attack AUC pending first independent run, ε lower bound pending first independent run. The audit is part of the report Ground computes for an upload, so your own dataset's report has its own result.
Differential privacy at each ε
| Dataset | Overall, default | Overall, Ground (DP ε=3) | Detection AUC, Ground (DP ε=3) | Overall, Ground (DP ε=3, MST) | Detection AUC, Ground (DP ε=3, MST) |
|---|---|---|---|---|---|
| Adult | 94 | 77 | 0.82 | 75 | 0.83 |
| Bank | 90 | 64 | 1.00 | 65 | 0.98 |
| Credit | 91 | 63 | 0.99 | 66 | 0.97 |
| Telco | 92 | 64 | 0.98 | 69 | 0.92 |
| Housing | 95 | 75 | 0.87 | 76 | 0.80 |
| Insurance | 98 | 80 | 0.75 | 82 | 0.73 |
Other values of ε: pending first independent run. At ε = 3 column shapes and the label mix survive, but a classifier can still tell the private rows from real ones (detection AUC near 1 on several tables): the noise breaks fine-grained structure, and rules are off because they can't be learned without spending budget. The schema, including every class of the label, is treated as public and isn't covered by ε.
What happens to your upload
- Files go from your browser straight to encrypted storage through short-lived signed links; nothing passes through the web app.
- Names, emails, phones, IDs, card numbers and addresses are detected and replaced with fake values, never modeled.
- In the default mode every source row is fingerprinted, and a generated row that would reproduce a rare real record is redrawn. (Private mode never reads real rows while generating, so it needs no copy guard.)
- Raw uploads, and the copies of their rows made for training, are deleted after 30 days by default or on request.
- When GPU engines are on for a dataset, the modeled columns (never identifiers or personal data) go to Ground's own Modal workspace through short-lived links, and Modal keeps nothing once a job ends. Free text goes there only if you turn on private fine-tuning for it, and the canary audit sends a second copy of the training rows. Those rows can still be personal data in combination (an age, a postcode and a diagnosis).
- For AI-written text columns, Claude sees only short, scrubbed examples, never your files. Uploads are never used to train AI models.
Next: methods and reproducibility, or read how to evaluate synthetic data quality and privacy.