Data | Density ratio | Kolmogorov-Smirnov | pMSE |
---|---|---|---|
Laplace | 0.620 | 0.375 | 0.610 |
Log-normal | 1.000 | 1.000 | 1.000 |
lst | 0.495 | 0.235 | 0.495 |
Normal | 0.050 | 0.045 | 0.040 |
Een density ratio aanpak
Maar misschien synthetische data?
Thom Volker (t.b.volker@uu.nl)
MSc. in Methoden en Statistiek & Sociologie
PhD kandidaat bij Universiteit Utrecht en CBS
Deze presentatie staat online op
https://thomvolker.github.io/npso
De broncode en resultaten zijn te vinden op
Neppe data, gegenereerde data, gesimuleerde data, digital twins
Eén data set om te synthetiseren
Eén generatief model
\[p(\boldsymbol{X} | \theta)\]
Een model \(f\) voor de data \(\boldsymbol{X}\);
Met parameters \(\theta\);
Geschat op basis van de echte data.
Definitie
Generatieve modellen leren de verdeling van de data \(\boldsymbol{X}\) gegeven de parameters \(\theta\).
Een normaalverdeling met parameters \(\theta = \{\mu, \sigma\}\).
R
: rnorm(n = 100, mean = 1, sd = 2)
Een histogram met klassen en proporties.
Sequentiële regressiemodellen voor een multivariate verdeling (met regressiecoefficienten en (co-)variantieparameters).
Een neuraal netwerk met duizenden parameters
Neerslag (in mm per jaar): \(\{\mu = 783, \sigma = 120\}\).
MICE: Multiple Imputation by Chained Equations
We kunnen een multivariaat generatief model creëren door univariate predictiemodellen te combineren.
\[p(X_1, X_2, X_3) = p(X_1 | X_2, X_3) p(X_2 | X_1, X_3) p(X_3 | X_1, X_2)\]
Handig: hiervoor kunnen univariate predictiemodellen gebruikt worden (lineaire regressie, tree-based methodes)!
Predictiemodellen kunnen verschillen per variabele.
Zolang we maar onzekerheid rondom de voorspellingen meenemen.
Maar goede synthetische data genereren is moeilijk!
Basisbereiding: Creëer synthetische data met simpele modellen
Proef of de synthetische data voldoende kwaliteit heeft
Breng op smaak door complexiteit toe te voegen (transformaties, interacties, non-linearities)
Itereer tussen (2.) en (3.) totdat de synthetische data de gewenste smaak heeft
Hebben de synthetische en geobserveerde data een vergelijkbare verdeling?
Kunnen we de synthetische data voor dezelfde doeleinden gebruiken als de geobserveerde data?
Kunnen we de synthetische data onderscheiden van de echte data?
Geven analyses van de synthetische en geobserveerde data vergelijkbare resultaten?
Maar we weten vaak niet waarvoor deze gebruikt wordt…
Als de synthetische en de geobserveerde data gelijke verdelingen hebben, zouden ze vergelijkbare resultaten moeten geven
Plak synthetische en geobserveerde data onder elkaar
Voorspel voor elke observatie de kans \(\pi_i\) dat deze synthetisch is
Calculate \(pMSE\) as \(\sum^N_{i=1} (\pi_i - c)^2/N\), met \(c = n_{\text{syn}} / (n_{\text{syn}} + n_{\text{obs}})\)
Vergelijk \(pMSE\) met verwachte waarde onder een correct generatief model
Kleine \(pMSE\) waardes: synthetische data lijkt op echte data.
Nadeel: Welk voorspelmodel? Hoog-dimensionele data?
\[KL(\boldsymbol{X}_{\text{syn}}, \boldsymbol{X}_{\text{obs}}) = \int \log\Bigg(\frac{p(\boldsymbol{X}_{\text{syn}})}{p(\boldsymbol{X}_{\text{obs}})}\Bigg) p(\boldsymbol{X}_\text{syn})\]
Elegante methode
Praktisch moeilijk te schatten
Density ratios1 als kwaliteitsmaat
\[r(x) = \frac{p(\boldsymbol{X}_{\text{syn }})}{p(\boldsymbol{X}_{obs})}\]
Unconstrained least-squares importance fitting: \(r(\boldsymbol{X}) = \boldsymbol{\psi(X)}\theta\).
Implemented in R
-package densityratio
.
Vergelijk de Pearson divergence voor verschillende data sets
Optioneel: Toets de nulhypothese \(p(\boldsymbol{X}_{\text{syn}}) = p(\boldsymbol{X}_{\text{obs}})\) d.m.v. een permutatietest.
Power en type I error rate
Data | Density ratio | Kolmogorov-Smirnov | pMSE |
---|---|---|---|
Laplace | 0.620 | 0.375 | 0.610 |
Log-normal | 1.000 | 1.000 | 1.000 |
lst | 0.495 | 0.235 | 0.495 |
Normal | 0.050 | 0.045 | 0.040 |
(Multinomiale) logistische regressie voor categorische variabelen
Geschiktheid voor categorische data moet onderzocht worden
Privacy risico’s van density ratio waardes?
Voor iedere synthetische observatie wordt een density ratio waarde geschat
Synthetische outliers detecteren / verwijderen
Analyses op synthetische data herwegen
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.
In alle bovengenoemde voorbeelden zijn dezelfde hyperparameters gebruikt
Kruisvalidatie zorgt ervoor dat de parameters in het density ratio model zo goed mogelijk gekozen worden.
\[\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}\]
\[\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}}. \]
Vragen?
Nog meer vragen?