Fairness analysis for ML in production with LGPD/BACEN compliance, drift detection, and monitoring
Project description
⚖️ justiceai
Fairness em ML para Produção: A primeira biblioteca Python focada em monitoramento de fairness em produção, com compliance LGPD/BACEN nativo e relatórios standalone.
🎯 O Problema
Ferramentas como Fairlearn e AIF360 são excelentes para pesquisa, mas param no notebook. Você precisa de fairness em produção, com:
- ✅ Monitoramento contínuo de viés
- ✅ Compliance automático (LGPD Art. 20, BACEN Res. 4.658)
- ✅ Relatórios prontos para stakeholders não-técnicos
- ✅ Zero vendor lock-in (funciona com sklearn, XGBoost, PyTorch, TensorFlow)
justiceai resolve isso.
🚀 Quick Start
from justiceai import audit
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
# Carregar dados
data = load_breast_cancer()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target
df['gender'] = np.random.choice(['M', 'F'], size=len(df)) # Atributo protegido
# Treinar modelo
model = RandomForestClassifier()
model.fit(df.drop(['target', 'gender'], axis=1), df['target'])
# Avaliar fairness em 1 linha
report = audit(
model=model,
data=df,
target='target',
protected_attrs=['gender']
)
# Visualizar
report.show() # Abre HTML interativo no navegador
report.save_html('fairness_report.html') # Salva para compartilhar
Output: Relatório HTML standalone com Plotly interativo, pronto para apresentar ao board.
🇧🇷 Compliance LGPD/BACEN
from justiceai import audit
from justiceai.compliance import LGPDComplianceReporter, BACENComplianceReporter
# Executar auditoria de fairness
report = audit(model, X, y, sensitive_attrs)
# Gerar relatório LGPD (Art. 20)
lgpd_reporter = LGPDComplianceReporter(report)
lgpd_reporter.save_html('lgpd_compliance.html')
# Gerar relatório BACEN (Res. 4.658)
bacen_reporter = BACENComplianceReporter(report)
compliance_data = bacen_reporter.generate_report()
print(f"Risco do Modelo: {compliance_data['risco_modelo']['nivel_risco']}")
📈 Monitoring em Produção
from justiceai.monitoring import (
FairnessDriftDetector,
FairnessAlerting,
ConsoleAlertChannel
)
# Estabelecer baseline
baseline_metrics = {'statistical_parity': 0.95, 'equal_opportunity': 0.92}
# Configurar detector
detector = FairnessDriftDetector(baseline_metrics, threshold=0.10)
# Configurar alertas
alerting = FairnessAlerting()
alerting.add_channel('console', ConsoleAlertChannel())
# Monitorar novos dados
new_metrics = {'statistical_parity': 0.75, 'equal_opportunity': 0.90}
drift_result = detector.detect(new_metrics)
if drift_result.has_drift:
print(f"⚠️ Drift detectado: {list(drift_result.drifted_metrics.keys())}")
alerting.send_drift_alert(drift_result, detector)
📦 Instalação
Via pip (em breve)
pip install justiceai
Para Desenvolvimento
# Clone o repositório
git clone https://github.com/guhaase/justiceai.git
cd justiceai
# Instale com Poetry
poetry install
# Ative o ambiente
poetry shell
# Rode os testes
pytest
✨ Features
🔬 15+ Métricas de Fairness
Pre-Training (independentes de modelo)
- Class Balance: Distribuição balanceada entre grupos
- Concept Balance: Taxa de positivos balanceada
- KL/JS Divergence: Similaridade de distribuições
Post-Training (baseadas em predições)
- Statistical Parity: Taxa de predições positivas igual
- Disparate Impact: Compliance com regra EEOC 80%
- Equal Opportunity: TPR igual entre grupos
- Equalized Odds: TPR e FPR iguais
- + 8 métricas adicionais
📊 Relatórios Standalone
- HTML Interativo: Plotly charts, funciona offline
- PDF Profissional: Pronto para auditoria (em breve)
- Markdown: Versionável em Git (em breve)
🇧🇷 Compliance Brasil
- LGPD Art. 20: Template pronto para direito à explicação
- BACEN Res. 4.658: Análise de risco de modelo
- Português nativo: Relatórios e erros em PT-BR
🔌 Framework-Agnostic
Funciona com:
- ✅ scikit-learn
- ✅ XGBoost
- ✅ LightGBM
- ⏳ PyTorch (em breve)
- ⏳ TensorFlow (em breve)
- ⏳ ONNX (em breve)
📈 Monitoring em Produção
- Drift Detection: Detecta degradação de fairness ao longo do tempo (threshold, PSI, KS test)
- Alerting: Slack/Email/Webhook quando métricas violam thresholds
- Continuous Monitoring: Histórico, tendências e alertas automáticos
📚 Documentação
Status: ✅ Completa
- Installation Guide - Setup and installation
- Quick Start - Your first fairness audit in 5 minutes
- Basic Concepts - Understanding fairness metrics
- API Reference - Complete API documentation
- Tutorials - 3 Jupyter notebooks with hands-on examples
- FAQ - 40+ common questions answered
- Contributing - Guidelines for contributors
🔬 Comparação com Concorrentes
| Feature | Fairlearn | AIF360 | justiceai |
|---|---|---|---|
| Métricas | 8 | 70+ | 15+ (curadas) |
| MLOps/Produção | ❌ | ❌ | ✅ |
| Compliance BR | ❌ | ❌ | ✅ |
| Reports Standalone | ❌ | ⚠️ | ✅ (HTML Plotly) |
| Framework-Agnostic | ⚠️ | ⚠️ | ✅ |
| API 1-liner | ❌ | ❌ | ✅ |
| Monitoring | ❌ | ❌ | ✅ (em breve) |
🗺️ Roadmap
✅ v0.1.0 (Sprint 1-3) - COMPLETO
- Setup projeto (Poetry, CI/CD)
- 15+ métricas de fairness
- Reports HTML com Plotly
- API
audit()simples - FairnessEvaluator API
- Model adapters (sklearn + factory)
- Documentação completa (MkDocs)
- 3 tutoriais Jupyter
- 192 testes, 90%+ coverage
- FAQ com 40+ questões
🏗️ v0.2.0 (Sprint 4) - Compliance
- Suporte XGBoost, LightGBM
- Templates LGPD/BACEN
- Monitoring e drift detection
- Threshold optimization
- Reports PDF
🔮 v0.3.0 (Sprint 5) - Release Público
- Publicado no PyPI
- GitHub Pages documentation
- Português nativo completo
- Suporte PyTorch/TensorFlow
🌟 v1.0+ (Futuro)
- Mitigação automática de viés
- IA-powered insights (LLM)
- Integração MLflow/W&B
- SaaS offering (?)
🤝 Contribuindo
Contribuições são muito bem-vindas! Veja CONTRIBUTING.md para guidelines.
Como Contribuir
- Fork o repositório
- Clone seu fork:
git clone https://github.com/SEU-USUARIO/justiceai.git - Crie uma branch:
git checkout -b feature/minha-feature - Faça mudanças e commit:
git commit -m "feat: adiciona minha feature" - Push:
git push origin feature/minha-feature - Abra um Pull Request
Code Quality
Antes de abrir PR, rode:
# Formatar código
make format
# Linting
make lint
# Type checking
make type-check
# Testes
make test
# Tudo de uma vez
make quality
📊 Status do Projeto
Fase Atual: Sprint 3 Completo - v0.1.0 Ready!
| Métrica | Status | Target |
|---|---|---|
| Coverage | ✅ 90.03% | 90% |
| Testes | ✅ 192 passing | 150+ |
| Docs | ✅ 20 pages | 100% |
| Tutorials | ✅ 3 notebooks | 3 |
Sprints Completos: 3/5 (60%)
- ✅ Sprint 1: Core Metrics
- ✅ Sprint 2: HTML Reports
- ✅ Sprint 3: API + Documentation
- 🔄 Sprint 4: Compliance (próximo)
- ⏳ Sprint 5: Release Público
📄 Licença
Este projeto está licenciado sob a MIT License.
MIT License
Copyright (c) 2026 Gustavo Haase
Permission is hereby granted, free of charge, to any person obtaining a copy...
👥 Autores
Gustavo Haase
- Email: gustavo.haase@gmail.com
- GitHub: @guhaase
🙏 Agradecimentos
- DeepBridge: Base de código que inspirou este projeto
- Fairlearn/AIF360: Referências de métricas
- Comunidade Python: Ferramentas incríveis (Poetry, Pytest, Black, etc.)
📞 Suporte
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: gustavo.haase@gmail.com
🌟 Star History
Feito com ❤️ para tornar ML mais justo e responsável
⚖️ justiceai - Fairness em ML para Produção
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file justiceai-0.4.0.tar.gz.
File metadata
- Download URL: justiceai-0.4.0.tar.gz
- Upload date:
- Size: 51.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.6.87.1-microsoft-standard-WSL2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a09fd59539cb24c2bf7c7f27f2a01eef0ca2efb2e19f03c1d4effdf3cfefa96b
|
|
| MD5 |
e05b207ab7e712f2dd819858875da93f
|
|
| BLAKE2b-256 |
34aee6b6f9d0d90bbc9815b6ce6232d6c5194be29c7f64c8b14cd6ddf7661a6e
|
File details
Details for the file justiceai-0.4.0-py3-none-any.whl.
File metadata
- Download URL: justiceai-0.4.0-py3-none-any.whl
- Upload date:
- Size: 64.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.6.87.1-microsoft-standard-WSL2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3300962336729964a623ff1f4fc2830739348b736ed2cc980dfaba9f65d1496f
|
|
| MD5 |
b8118d42970adbdf7b3652ac55351890
|
|
| BLAKE2b-256 |
58918c58a37f096c6a0cb0fc09a35a0ff0de47d140dc0293f01cdaa47a90e7ff
|