Skip to main content

Production-ready multicalibration for machine learning

Reason this release was yanked:

Wrong version number

Project description

MCGrad: Production-ready multicalibration

Production-ready multicalibration

CI Coverage PyPI DOI Website API Reference License: MIT Python 3.10+


What is MCGrad?

MCGrad is a scalable and easy-to-use tool for multicalibration. It ensures your ML model predictions are well-calibrated not just globally (across all data), but also across virtually any segment defined by your features (e.g., by country, content type, or any combination).

Traditional calibration methods, like Isotonic Regression or Platt Scaling, only ensure global calibration—meaning predicted probabilities match observed outcomes on average across all data—but your model can still be systematically overconfident or underconfident for specific groups. MCGrad automatically identifies and corrects these hidden calibration gaps without requiring you to manually specify protected groups.

Global calibration curve showing well-calibrated predictions on average

A globally well-calibrated model: predictions match observed outcomes on average.

Segment-level calibration curves revealing hidden miscalibration in specific groups

The same model showing hidden miscalibration when broken down by segment. MCGrad fixes this.

🌟 Why MCGrad?

  • State-of-the-art multicalibration — Best-in-class calibration quality across a vast number of segments.
  • Easy to use — Familiar interface. Pass features, not segments.
  • Highly scalable — Fast to train, low inference overhead, even on web-scale data.
  • Safe by design — Likelihood-improving updates with validation-based early stopping.

🏭 Production Proven

MCGrad has been deployed at Meta on hundreds of production models. See the research paper for detailed experimental results.

📦 Installation

Requirements: Python 3.10+

Stable release:

pip install mcgrad

Latest development version:

pip install git+https://github.com/facebookincubator/MCGrad.git

🚀 Quick Start

from mcgrad import methods
import numpy as np
import pandas as pd

# Prepare your data in a DataFrame
df = pd.DataFrame({
    'prediction': np.array([0.1, 0.3, 0.7, 0.9, 0.5, 0.2]),  # Your model's predictions
    'label': np.array([0, 0, 1, 1, 1, 0]),  # Ground truth labels
    'country': ['US', 'UK', 'US', 'UK', 'US', 'UK'],  # Categorical feature
    'content_type': ['photo', 'video', 'photo', 'video', 'photo', 'video'],  # Categorical feature
})

# Apply MCGrad
mcgrad = methods.MCGrad()
mcgrad.fit(
    df_train=df,
    prediction_column_name='prediction',
    label_column_name='label',
    categorical_feature_column_names=['country', 'content_type']
)

# Get calibrated predictions
calibrated_predictions = mcgrad.predict(
    df=df,
    prediction_column_name='prediction',
    categorical_feature_column_names=['country', 'content_type']
)
# Returns: numpy array of calibrated probabilities, e.g., [0.12, 0.28, 0.72, ...]

📚 Documentation

💬 Community & Support

📖 Citation

If you use MCGrad in your research, please cite our paper.

@inproceedings{tax2026mcgrad,
  title={{MCGrad: Multicalibration at Web Scale}},
  author={Tax, Niek and Perini, Lorenzo and Linder, Fridolin and Haimovich, Daniel and Karamshuk, Dima and Okati, Nastaran and Vojnovic, Milan and Apostolopoulos, Pavlos Athanasios},
  booktitle={Proceedings of the 32nd ACM SIGKDD Conference on Knowledge Discovery and Data Mining V.1 (KDD 2026)},
  year={2026},
  doi={10.1145/3770854.3783954}
}

Related Publications

Some of our team's other work on multicalibration:

  • A New Metric to Measure Multicalibration: Guy, I., Haimovich, D., Linder, F., Okati, N., Perini, L., Tax, N., & Tygert, M. (2025). Measuring multi-calibration. arXiv:2506.11251.

  • Theoretical Results on Value of Multicalibration: Baldeschi, R. C., Di Gregorio, S., Fioravanti, S., Fusco, F., Guy, I., Haimovich, D., Leonardi, S., et al. (2025). Multicalibration yields better matchings. arXiv:2511.11413.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcgrad-0.0.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcgrad-0.0.0-py3-none-any.whl (109.0 kB view details)

Uploaded Python 3

File details

Details for the file mcgrad-0.0.0.tar.gz.

File metadata

  • Download URL: mcgrad-0.0.0.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcgrad-0.0.0.tar.gz
Algorithm Hash digest
SHA256 945eac7650596ee35e484151cf3b1e56605a9e9bf337cd5c643098c62bcf463a
MD5 2b53bf866337f27aeab751461a326574
BLAKE2b-256 c7ce0f833076eb66c483db0cf8641e66fe2ae05fb77d80b490aeceabdee771fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcgrad-0.0.0.tar.gz:

Publisher: publish-to-pypi.yml on facebookincubator/MCGrad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcgrad-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: mcgrad-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 109.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcgrad-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f69216a7cce41ca2e7b55ddb19290ceda1029e89bc4a473f2c690d1efcada07
MD5 fb5f3569041a0da17246f57ab1e0217f
BLAKE2b-256 de8df91b53c1f2a42dc0e6389eeb436dffa99917e2cd2fbaddf97fabf069b48b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcgrad-0.0.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on facebookincubator/MCGrad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page