Skip to content

ryan112358/mbi

Repository files navigation

MBI: Marginal-Based Estimation and Inference

(with applications to differential privacy)

drawing

DOI Continuous integration Documentation Status

Metrics for ryan112358/mbi repository

Documentation can be found at https://private-pgm.readthedocs.io/en/latest/!

Consider joining the Google Differential Privacy community in Slack.

Quick Start

from mbi import Domain, estimation, marginal_loss, callbacks

# Define a domain
domain = Domain(["age", "sex", "income"], [10, 2, 5])

# Provide noisy marginal measurements
measurements = [
    marginal_loss.LinearMeasurement(noisy_marginal_1, ("age", "sex")),
    marginal_loss.LinearMeasurement(noisy_marginal_2, ("sex", "income")),
]

# Estimate a graphical model
model = estimation.MirrorDescent().estimate(domain, measurements, iters=1000)

# Use the model
synthetic_data = model.synthetic_data(rows=1000)
age_sex_marginal = model.project(("age", "sex")).datavector()

Estimators

All estimators share the same Estimator API:

# Mirror Descent (recommended)
model = estimation.MirrorDescent().estimate(domain, measurements)

# Dual Averaging
model = estimation.DualAveraging().estimate(domain, measurements)

# Interior Gradient
model = estimation.InteriorGradient().estimate(domain, measurements)

Extension estimators provide alternative representations:

from mbi.extensions.mixture_of_products import MixtureOfProductsEstimator
from mbi.extensions.reweighted_dataset import ReweightedDatasetEstimator

# Mixture of Products (scalable, no graphical model)
model = MixtureOfProductsEstimator(num_components=100).estimate(domain, measurements)

# Reweighted Dataset (produces a weighted dataset)
model = ReweightedDatasetEstimator(seed_data=data).estimate(domain, measurements)

Callbacks

Monitor optimization progress with callbacks:

cb = callbacks.default(measurements)
model = estimation.MirrorDescent().estimate(
    domain, measurements, iters=1000, callback_fn=cb,
)

About

A library providing general-purpose tools for estimating discrete distributions from noisy observations of their marginals.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages