Het evalueren van de kwaliteit van synthetische data

Thom Benjamin Volker
t.b.volker@uu.nl

Stel je voor dat we toegang hebben tot alle data in de wereld

Dat zou een privacy-ramp zijn…

Wie ben ik?


Thom Volker (t.b.volker@uu.nl)

  • MSc. in Methoden en Statistiek & Sociologie

  • PhD kandidaat bij Universiteit Utrecht en CBS

    • Doel: Doorontwikkelen van veilige (!) data synthesis technieken

Open materialen

Deze presentatie staat online op

https://thomvolker.github.io/utiliteit

De broncode en resultaten zijn te vinden op

https://github.com/thomvolker/utiliteit

Synthetische data

Neppe data, gegenereerde data, gesimuleerde data, digital twins

Synthetische data generatie cyclus

  1. Creëer synthetische data met simpele/algemene modellen

  2. Evalueer of de synthetische data de gewenste kwaliteit heeft

  3. Indien nodig, voeg complexiteit toe (specifieke modellen, transformations, interacties)

  4. Itereer tussen (2.) en (3.) totdat de synthetische data naar wens is

De privacy-utility trade-off

Synthetische data is altijd een compromis tussen het beschermen van privacy en het behouden van utiliteit

Privacy en utiliteit zijn tegenpolen



De vraag is: hoeveel informatie moeten we opofferen om de privacy van de respondenten te beschermen?

Of: welk privacy risico is aanvaardbaar om een zo bruikbaar mogelijke dataset te behouden?

Privacy versus utiliteit

  • Elke parameter in het model bevat informatie over de observaties in de echte data

  • Hoe meer parameters je gebruikt om synthetische data te generen, hoe hoger de utiliteit

  • Wanneer de informatie in de parameters gelijk is aan de informatie in de echte data, recreëren we de echte data

  • Op dat moment is er geen privacybescherming meer

Privacy versus utiliteit

Wanneer is synthetische data bruikbaar?

Intuïtief

  • Kunnen we de synthetische data voor dezelfde doeleinden gebruiken als de geobserveerde data?

  • Hebben de synthetische en geobserveerde data een vergelijkbare verdeling?

Praktisch

  • Geven analyses van de synthetische en geobserveerde data vergelijkbare resultaten?

  • Kunnen we de synthetische data onderscheiden van de echte data?

Kwaliteitsmaten voor synthetische data


Fit-for-purpose utiliteitsmaten


Analyse-specifieke utiliteitsmaten


Algemene / globale utiliteitsmaten

Fit-for-purpose maten


Startpunt van utiliteitsevaluatie

De synthetische data moet geschikt zijn voor het doel waartoe het dient


Juiste variabele-typen: zijn categorische variabelen nog categorische variabelen?

Plausibiliteit: negatieve leeftijden, peuters met een masterdiploma

Visuele inspectie (vaak de belangrijkste methode)

Voorbeeld


Is dit “plausibele” synthetische data?


n mean sd median skew
Observed 500 3.07600 1.402197 3.000000 -0.0304055
Synthetic 500 3.08803 1.445419 3.094385 0.1730267

Het belang van visuele inspectie

Want kwantitatieve maten kunnen misleidend zijn

Is dit een probleem?

Analyse-specifieke utiliteitsmaten

Als je weet welke analyse uitgevoerd gaat worden, kun je synthetische data evalueren voor dit doel


Gemiddelde 2.5% 97.5%
Observed 3.076 2.953 3.199
Synthetic 3.088 2.961 3.215


Betrouwbaarheidsinterval overlap: 0.952

Analyse-specifieke utiliteitsmaten

Als je weet dat de gebruiker een lineair regressiemodel wil schatten:

  • Evalueer gemiddeldes en covariantiematrix; als deze vergelijkbaar zijn, geeft je synthetische data vergelijkbare resultaten

Als je weet dat de gebruiker een predictiemodel wil toepassen:

  • Evalueer voorspellende prestaties in de synthetische data

Bewijs dat covariantiematrix en gemiddelden genoeg zijn

N <- 1000
P <- 5
S <- diag(P) + 1
X <- rnorm(N*P) |> matrix(N) %*% chol(S)
Y <- X %*% c(0:4/5) + rnorm(N)

coef(lm(Y ~ X))
 (Intercept)           X1           X2           X3           X4           X5 
-0.009522669  0.031481189  0.224779583  0.378608643  0.576827811  0.778974409 
Vobs <- var(cbind(X, Y))
b <- solve(Vobs[1:5, 1:5]) %*% Vobs[1:5, 6]
b0 <- mean(Y) - colMeans(X) %*% b
c(b0, b)
[1] -0.009522669  0.031481189  0.224779583  0.378608643  0.576827811
[6]  0.778974409

Maar hoe weten we welke analyses met de synthetische data uitgevoerd worden?

Globale utiliteitsmaten

Als de synthetische en de geobserveerde data gelijke verdelingen hebben, zouden ze vergelijkbare resultaten moeten geven

Bestaande kwaliteitsmaten: pMSE

  1. Plak synthetische en geobserveerde data onder elkaar

  2. Voorspel voor elke observatie de kans \pi_i dat deze synthetisch is

  3. Bereken pMSE als \sum^N_{i=1} (\pi_i - c)^2/N, met c = n_{\text{syn}} / (n_{\text{syn}} + n_{\text{obs}})

  4. Vergelijk pMSE met verwachte waarde onder een correct generatief model

pMSE

Intuitief en flexibel, makkelijk te berekenen

Maar soms te simpel

Model specificatie kan lastig zijn

De pMSE-ratio in ons voorbeeld: 3.62

Een density ratio raamwerk

Density ratios1 als kwaliteitsmaat


r(x) = \frac{p(\boldsymbol{X}_{\text{syn }})}{p(\boldsymbol{X}_{obs})}

Density ratios als utiliteitsmaat

Density ratios schatten

  1. Schat de density ratio met een non-parametrische methode
  1. Bereken een discrepantie maat voor de synthetische data (Kullback-Leibler divergence, Pearson divergence)

  2. Vergelijk de Pearson divergence voor verschillende data sets

  3. Optioneel: Toets de nulhypothese p(\boldsymbol{X}_{\text{syn}}) = p(\boldsymbol{X}_{\text{obs}}) d.m.v. een permutatietest.

Density ratio in ons voorbeeld

library(densityratio)
fit <- ulsif(syn, obs)
summary(fit, test = TRUE, parallel = TRUE)

Call:
ulsif(df_numerator = syn, df_denominator = obs)

Kernel Information:
  Kernel type: Gaussian with L2 norm distances
  Number of kernels: 200
  Optimal sigma: 0.1294688
  Optimal lambda: 0.1623777
  Optimal kernel weights (loocv): num [1:201] 2.0966 0.3538 0.4966 -0.2634 0.0313 ...
 
Pearson divergence between P(nu) and P(de): 2.421
Pr(P(nu)=P(de)) < .001
Bonferroni-corrected for testing with r(x) = P(nu)/P(de) AND r*(x) = P(de)/P(nu).

Density ratios voor multivariate synthetische data

U.S. Current Population Survey (n = 5000)1

  • Vier continue variabelen (leeftijd, inkomen, sociale uitkeringen, eigendomsbelasting)
  • Vier categorische variabelen (geslacht, etniciteit, huwelijkse staat, opleidingsniveau)

Synthetische data modellen

(Multinomiale) logistische regressie voor categorische variabelen

  1. Lineaire regressie
  2. Lineaire regressie met transformaties (kubieke wortel)
  3. Lineaire regressie met transformaties and semi-continu modelleren

Utility of the synthetic data

Terug naar de kern

Samenvatting


Hoe specifieker hoe beter


Maar soms kan het niet specifiek, omdat je het doel niet kent


Dan blijft het belangrijk om met specifieke maten te evalueren


Maar kunnen algemene maten ook heel nuttig zijn

Negeer niet de privacy risico’s, synthetische data kan té realistisch zijn

Dank voor jullie aandacht!

Vragen?



Nog meer vragen?

Kwaliteit van synthetische data punten

Voor iedere synthetische observatie wordt een density ratio waarde geschat

  • Synthetische outliers detecteren / verwijderen

  • Analyses op synthetische data herwegen

Beschikbare extensies voor hoogdimensionele data

Aanname: subspace waarin de synthetische data goed gemodelleerd is, en een subspace waar de synthetische data niet goed gemodelleerd is

Doel: subspace herkennen waar de synthetische data niet goed gemodelleerd is, en hierop de density ratio schatten.

Kruisvalidatie voor automatische parameter selectie

In alle bovengenoemde voorbeelden zijn dezelfde hyperparameters gebruikt

Kruisvalidatie zorgt ervoor dat de parameters in het density ratio model zo goed mogelijk gekozen worden.

Bestaande kwaliteitsmaten als density ratios

pMSE

\begin{aligned} r(\boldsymbol{X}) &= \frac{p(\boldsymbol{X}_{\text{syn}})}{p(\boldsymbol{X}_{\text{obs}})} \\ &= \frac{p(\boldsymbol{X} | Y = \text{synthetic})}{p(\boldsymbol{X}| Y = \text{observed})} = \frac{\frac{p(Y = \text{synthetic} | \boldsymbol{X})p(\boldsymbol{X})}{p(Y = \text{synthetic})}}{\frac{p(Y = \text{observed})p(\boldsymbol{X})}{p(Y = \text{observed})}} \\ &= \frac{p(Y = \text{observed})}{p(Y = \text{synthetic})} \frac{p(Y = \text{synthetic} | \boldsymbol{X})}{p(Y = \text{observed} | \boldsymbol{X})} \end{aligned}

Kullback-Leibler divergence

\begin{aligned} KL(\boldsymbol{X}_{\text{syn}}, X_{\text{obs}}) = \int \log\Bigg(\frac{p(\boldsymbol{X}_{\text{syn}})}{p(\boldsymbol{X}_{\text{obs}})}\Bigg) p(\boldsymbol{X}_\text{syn}) \end{aligned}

Note that \int \log\Bigg(\frac{p(\boldsymbol{X}_{\text{syn}})}{p(\boldsymbol{X}_{\text{obs}})}\Bigg) p(\boldsymbol{X}_\text{syn}) can be approximated as \sum^{n_{\text{syn}}}_{i=1} \log(r(\boldsymbol{X}_\text{syn}))/n_{\text{syn}}.