Wiki IA
Éthique

Biais et équité

Comprendre et atténuer les biais dans les systèmes d'IA

Les biais algorithmiques sont des erreurs systématiques dans les systèmes d'IA qui conduisent à des résultats injustes pour certains groupes de personnes.

Qu'est-ce qu'un biais algorithmique ?

Définition

BIAIS = Erreur systématique favorisant ou défavorisant
        certains groupes de manière injuste

Exemples :
├── Reconnaissance faciale moins précise pour les peaux foncées
├── CV de femmes moins bien notés par les algorithmes de recrutement
├── Scoring de crédit défavorable pour certains quartiers
└── Diagnostic médical moins fiable pour les minorités

Sources de biais

┌─────────────────────────────────────────────────────────────┐
│                   SOURCES DE BIAIS                           │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. DONNÉES D'ENTRAÎNEMENT                                  │
│     ├── Sous-représentation de groupes                      │
│     ├── Données historiques biaisées                        │
│     ├── Erreurs d'étiquetage                               │
│     └── Biais de sélection                                  │
│                                                              │
│  2. CONCEPTION DU MODÈLE                                    │
│     ├── Choix des features (variables proxy)               │
│     ├── Fonction objectif mal définie                       │
│     ├── Métriques d'évaluation inadaptées                  │
│     └── Manque de tests de fairness                        │
│                                                              │
│  3. DÉPLOIEMENT                                             │
│     ├── Contexte d'utilisation différent                   │
│     ├── Feedback loops                                      │
│     └── Dérive des données                                  │
│                                                              │
│  4. INTERPRÉTATION                                          │
│     ├── Surconfiance dans les résultats                    │
│     └── Manque de supervision humaine                       │
│                                                              │
└─────────────────────────────────────────────────────────────┘

Cas célèbres de biais

COMPAS (Justice)

Système de prédiction de récidive utilisé dans les tribunaux américains.

Étude ProPublica (2016) :

Taux de faux positifs (prédit récidiviste à tort) :
├── Personnes noires : 45%
└── Personnes blanches : 23%

Taux de faux négatifs (prédit non-récidiviste à tort) :
├── Personnes noires : 28%
└── Personnes blanches : 48%

→ Le système était deux fois plus susceptible de mal classifier
  les personnes noires comme à haut risque

Amazon Recruiting (Recrutement)

Outil de tri de CV abandonné par Amazon en 2018.

Problème :
- Entraîné sur 10 ans de CV historiques
- Majoritairement des hommes dans les postes tech
- Le modèle a appris à pénaliser les CV de femmes

Manifestations :
- Pénalisation du mot "women's" (ex: "women's chess club")
- Défavorisation des universités féminines
- Préférence pour les termes masculins

→ Projet abandonné car impossible à débiaiser

Reconnaissance faciale

Étude Gender Shades (MIT, 2018) :

GroupeTaux d'erreur IBMTaux d'erreur Microsoft
Hommes à peau claire0.0%0.0%
Femmes à peau claire0.3%1.7%
Hommes à peau foncée6.0%6.0%
Femmes à peau foncée34.7%20.8%

Types de biais

Biais de représentation

# Exemple : dataset déséquilibré

dataset_composition = {
    "groupe_majoritaire": 90000,  # 90%
    "groupe_minoritaire": 10000   # 10%
}

# Le modèle optimise pour la majorité
# Performance sur minorité dégradée

Biais de mesure

Variable proxy = Variable corrélée avec un attribut protégé

Exemples :
├── Code postal → origine ethnique / niveau socio-économique
├── Prénom → genre / origine
├── Université → milieu social
└── Loisirs → genre / culture

Problème : même sans utiliser directement l'attribut protégé,
          le modèle peut discriminer via les proxies

Biais de feedback loop

┌──────────────────────────────────────────────┐
│           BOUCLE DE RÉTROACTION              │
├──────────────────────────────────────────────┤
│                                              │
│  Modèle prédit plus de criminalité           │
│  dans certains quartiers                     │
│            ↓                                 │
│  Plus de police déployée dans ces quartiers │
│            ↓                                 │
│  Plus d'arrestations dans ces quartiers     │
│            ↓                                 │
│  Données confirment la prédiction initiale  │
│            ↓                                 │
│  Modèle renforce le biais                   │
│            ↓                                 │
│  (répétition du cycle)                       │
│                                              │
└──────────────────────────────────────────────┘

Métriques d'équité (Fairness)

Définitions de l'équité

Il existe plusieurs définitions de l'équité, parfois incompatibles :

1. DEMOGRAPHIC PARITY (Parité démographique)
   P(Ŷ=1|A=0) = P(Ŷ=1|A=1)
   "Même taux de décisions positives pour tous les groupes"

2. EQUALIZED ODDS (Égalité des chances)
   P(Ŷ=1|Y=1,A=0) = P(Ŷ=1|Y=1,A=1)  ET
   P(Ŷ=1|Y=0,A=0) = P(Ŷ=1|Y=0,A=1)
   "Mêmes taux de vrais/faux positifs pour tous"

3. PREDICTIVE PARITY (Parité prédictive)
   P(Y=1|Ŷ=1,A=0) = P(Y=1|Ŷ=1,A=1)
   "Même précision des prédictions positives"

4. INDIVIDUAL FAIRNESS
   "Individus similaires → décisions similaires"

Où : A = attribut sensible, Y = vraie valeur, Ŷ = prédiction

Impossibilité de Chouldechova

THÉORÈME :
Sauf cas particuliers, il est IMPOSSIBLE de satisfaire
simultanément :
- Equalized odds
- Predictive parity

→ Il faut choisir quelle définition de l'équité prioriser
→ Ce choix est une décision ÉTHIQUE, pas technique

Mesurer l'équité en Python

from fairlearn.metrics import (
    demographic_parity_difference,
    equalized_odds_difference,
    MetricFrame
)
from sklearn.metrics import accuracy_score, precision_score, recall_score

# Calculer les métriques par groupe
metric_frame = MetricFrame(
    metrics={
        "accuracy": accuracy_score,
        "precision": precision_score,
        "recall": recall_score
    },
    y_true=y_test,
    y_pred=y_pred,
    sensitive_features=sensitive_features
)

# Afficher les résultats par groupe
print(metric_frame.by_group)

# Différence de parité démographique
dpd = demographic_parity_difference(
    y_test, y_pred,
    sensitive_features=sensitive_features
)
print(f"Demographic Parity Difference: {dpd:.3f}")

# Différence d'equalized odds
eod = equalized_odds_difference(
    y_test, y_pred,
    sensitive_features=sensitive_features
)
print(f"Equalized Odds Difference: {eod:.3f}")

Techniques d'atténuation

Pré-processing : agir sur les données

from fairlearn.preprocessing import CorrelationRemover

# Supprimer la corrélation avec l'attribut sensible
cr = CorrelationRemover(sensitive_feature_ids=[0])
X_fair = cr.fit_transform(X_train)

Techniques :

  • Rééchantillonnage (sur/sous-échantillonnage)
  • Suppression des corrélations
  • Data augmentation équilibrée
  • Anonymisation des attributs sensibles

In-processing : agir sur l'entraînement

from fairlearn.reductions import ExponentiatedGradient, DemographicParity

# Contrainte d'équité pendant l'entraînement
constraint = DemographicParity()

mitigator = ExponentiatedGradient(
    estimator=LogisticRegression(),
    constraints=constraint
)

mitigator.fit(X_train, y_train, sensitive_features=sensitive_train)
y_pred_fair = mitigator.predict(X_test)

Techniques :

  • Contraintes d'équité dans la fonction de perte
  • Adversarial debiasing
  • Regularisation pour l'équité

Post-processing : ajuster les prédictions

from fairlearn.postprocessing import ThresholdOptimizer

# Ajuster les seuils par groupe pour l'équité
postprocess = ThresholdOptimizer(
    estimator=model,
    constraints="equalized_odds",
    prefit=True
)

postprocess.fit(X_train, y_train, sensitive_features=sensitive_train)
y_pred_fair = postprocess.predict(X_test, sensitive_features=sensitive_test)

Techniques :

  • Seuils différenciés par groupe
  • Calibration des probabilités
  • Reject option classification

Bonnes pratiques

Checklist anti-biais

AVANT L'ENTRAÎNEMENT :
□ Analyser la composition du dataset
□ Vérifier la représentativité des groupes
□ Identifier les variables proxy potentielles
□ Définir les critères d'équité pertinents

PENDANT L'ENTRAÎNEMENT :
□ Utiliser des techniques d'atténuation
□ Monitorer les métriques d'équité
□ Tester sur des sous-groupes

APRÈS L'ENTRAÎNEMENT :
□ Auditer les performances par groupe
□ Documenter les limitations
□ Planifier des audits réguliers

EN PRODUCTION :
□ Monitorer la dérive
□ Collecter les retours utilisateurs
□ Prévoir un processus de contestation

Audit d'équité

def audit_fairness(model, X_test, y_test, sensitive_features, threshold=0.1):
    """Audit complet d'équité d'un modèle."""

    y_pred = model.predict(X_test)

    # Métriques par groupe
    mf = MetricFrame(
        metrics={"accuracy": accuracy_score, "selection_rate": selection_rate},
        y_true=y_test,
        y_pred=y_pred,
        sensitive_features=sensitive_features
    )

    # Différences
    dpd = demographic_parity_difference(y_test, y_pred, sensitive_features=sensitive_features)
    eod = equalized_odds_difference(y_test, y_pred, sensitive_features=sensitive_features)

    # Rapport
    report = {
        "metrics_by_group": mf.by_group.to_dict(),
        "demographic_parity_diff": dpd,
        "equalized_odds_diff": eod,
        "passes_threshold": dpd < threshold and eod < threshold
    }

    return report

Outils et frameworks

OutilDescriptionLangage
FairlearnMicrosoft, métriques et atténuationPython
AI Fairness 360IBM, toolkit completPython
AequitasAudit de biaisPython
What-If ToolGoogle, visualisationTensorFlow
Themis-MLTests de fairnessPython
FairMLAudit de featuresPython

Limites et réflexions

L'équité parfaite n'existe pas

Dilemmes :
├── Équité de groupe vs individuelle
├── Égalité de traitement vs égalité de résultat
├── Court terme vs long terme
└── Précision vs équité

→ Des compromis sont inévitables
→ Ces choix doivent être délibérés et documentés

Au-delà du technique

Le biais algorithmique reflète des problèmes sociétaux :
├── Inégalités historiques
├── Discrimination systémique
├── Manque de diversité dans la tech

Solutions techniques seules insuffisantes :
├── Diversifier les équipes
├── Impliquer les communautés affectées
├── Régulation et accountability
└── Éducation et sensibilisation

Résumé

BIAIS ALGORITHMIQUE = Erreur systématique injuste

Sources :
├── Données (représentation, historique, étiquetage)
├── Modèle (features, objectif, métriques)
├── Déploiement (contexte, feedback)
└── Interprétation (surconfiance)

Métriques d'équité :
├── Demographic parity
├── Equalized odds
├── Predictive parity
└── Individual fairness

Atténuation :
├── Pré-processing (données)
├── In-processing (entraînement)
└── Post-processing (prédictions)

Outils : Fairlearn, AI Fairness 360, Aequitas

Important : L'équité est un choix éthique, pas seulement technique

On this page