Skip to main content

Fairness-constrained machine learning using Seldonian algorithms with confidence bound optimizations

Project description

Fair-Seldonian

Fairness-constrained machine learning with high-confidence guarantees

Python 3.10+ Build License: MIT Docs Paper


A Python framework implementing the Quasi-Seldonian Algorithm (QSA) for training ML models that provably satisfy fairness constraints. Given a behavioral constraint and a confidence level δ, the algorithm either returns a model satisfying the constraint with probability ≥ 1 − δ, or returns No Solution Found — never an unsafe model.

Built on the Seldonian algorithm framework by Thomas et al. (2019), with extensions for tighter confidence bounds through constant-aware delta allocation, union bound optimization, and decomposed candidate-safety intervals.

Quick links

Documentation parulgupta1004.github.io/fair-seldonian
Repository github.com/parulgupta1004/fair-seldonian
Paper Thomas et al., Science 366 (2019) — doi:10.1126/science.aag3311

Installation

git clone https://github.com/parulgupta1004/fair-seldonian.git
cd fair-seldonian
uv sync                          # core dependencies
uv sync --extra experiments      # + Ray for parallel experiments
uv sync --extra plots            # + matplotlib for visualization

Or with pip: pip install -e ".[experiments,plots]"

Usage

from fair_seldonian.algorithms import QSA
from fair_seldonian.models import eval_ghat
from fair_seldonian.data import get_data, data_split

data = get_data(N=10000, features=5, t_ratio=0.4,
                tp0_ratio=0.4, tp1_ratio=0.6, random_seed=42)
X_te, Y_te, T_te, X_tr, Y_tr, T_tr = data_split(
    frac=0.5, All=data, random_state=1, mTest=0.2)

theta, theta1, passed = QSA(X_tr, Y_tr, T_tr, seldonian_type="opt")

if passed:
    print("Upper bound:", eval_ghat(theta, theta1, X_te, Y_te, T_te, "opt"))
else:
    print("No Solution Found")

Algorithm variants

Mode Description
base Standard Hoeffding bound, uniform δ-splitting
mod Decomposed candidate/safety estimation error
const Constant-aware δ allocation
bound Union bound optimization for repeated variables
opt All optimizations combined
uv run python -m fair_seldonian.experiments.runner opt
uv run python -m fair_seldonian.experiments.plots

Citation

@software{fair_seldonian,
  author = {Parul Gupta},
  title  = {Fair Seldonian Framework},
  year   = {2020}
}

This work builds on:

Thomas, P.S., da Silva, B.C., Barto, A.G., Giguere, S., Brun, Y., & Brunskill, E. (2019). "Preventing undesirable behavior of intelligent machines." Science, 366(6468), 999–1004.

License

MIT


Author: Parul Gupta · Initially developed under the guidance of Dr. Philip S. Thomas, University of Massachusetts Amherst.

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

fair_seldonian-1.0.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

fair_seldonian-1.0.0-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file fair_seldonian-1.0.0.tar.gz.

File metadata

  • Download URL: fair_seldonian-1.0.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fair_seldonian-1.0.0.tar.gz
Algorithm Hash digest
SHA256 79c0a3465b96a91c4b1c1edd1e53bc06850d2d474456fa920bf5ff4fc48b4750
MD5 faa50bd6e5a24f561d34c0465d46c6f2
BLAKE2b-256 318b46cc0daac73bedb2d30cb089f8c64c5872437bc23458b98d258212da2154

See more details on using hashes here.

Provenance

The following attestation bundles were made for fair_seldonian-1.0.0.tar.gz:

Publisher: publish.yml on parulgupta1004/fair-seldonian

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

File details

Details for the file fair_seldonian-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: fair_seldonian-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fair_seldonian-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85c52a719d4e9394dcf7877f135fa2c063bbef3298ebea0596cc89f6d097f3d7
MD5 834b73d8329fee0b874c75ee82fde9fe
BLAKE2b-256 c3d4140c94e7aee4e6c2e8474d55a76bb08a9dcf27a5140c5b8462f71dbd6e7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fair_seldonian-1.0.0-py3-none-any.whl:

Publisher: publish.yml on parulgupta1004/fair-seldonian

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