Passa al contenuto principale

Fairness audit in sanità

Indice


1. Perche' un audit di equita' in un modello clinico

Un modello che predice peggio per certi sottogruppi demografici puo' amplificare disuguaglianze gia' esistenti. Esempio paradigmatico: Obermeyer et al. (2019) hanno mostrato che un algoritmo usato negli ospedali statunitensi per allocare risorse extra ai pazienti piu' "complessi" sottostimava sistematicamente il bisogno dei pazienti afroamericani — non perche' usasse esplicitamente la razza, ma perche' il proxy usato (spesa sanitaria storica) era a sua volta condizionato da disparita' di accesso.

Su Diabetes-130, le variabili sensibili obbligatorie da auditare sono:

  • race (Caucasian, AfricanAmerican, Hispanic, Asian, Other, Missing)
  • age (fasce decennali da [0-10) a [90-100))

Opzionalmente: gender.

2. Tre definizioni di fairness (e perche' sono incompatibili)

Tutte le definizioni provano a rispondere alla stessa domanda — "il modello tratta i sottogruppi in modo equo?" — ma operativamente sono diverse.

2.1 Demographic Parity (Statistical Parity)

P(y^=1A=a)=P(y^=1A=b)a,bP(\hat{y}=1 \mid A=a) = P(\hat{y}=1 \mid A=b) \quad \forall a, b

Tradotto: il tasso di alert deve essere uguale fra gruppi.

  • Quando ha senso: quando vogliamo equa distribuzione del trattamento, indipendentemente dal "merito" (es. accesso a una risorsa con capacita' fissa).
  • Quando fallisce: ignora il base rate. Se Caucasian ha base rate 9% e AfricanAmerican ha base rate 13%, imporre Demographic Parity significa segnalare piu' alert nei Caucasian (per uniformare i tassi), penalizzando AfricanAmerican.

In Fairlearn:

from fairlearn.metrics import demographic_parity_difference
gap = demographic_parity_difference(y_true, y_pred, sensitive_features=race)

2.2 Equalized Odds

P(y^=1y=1,A=a)=P(y^=1y=1,A=b)(TPR uguale)P(\hat{y}=1 \mid y=1, A=a) = P(\hat{y}=1 \mid y=1, A=b) \quad \text{(TPR uguale)} P(y^=1y=0,A=a)=P(y^=1y=0,A=b)(FPR uguale)P(\hat{y}=1 \mid y=0, A=a) = P(\hat{y}=1 \mid y=0, A=b) \quad \text{(FPR uguale)}

Tradotto: dato lo stesso esito reale, la probabilita' di essere classificati e' uguale fra gruppi.

  • Quando ha senso: quando vogliamo che il modello sia ugualmente accurato per tutti i gruppi. In sanita' e' tipicamente la definizione piu' rilevante: tutti i pazienti realmente a rischio devono avere uguale probabilita' di essere intercettati.
  • Quando fallisce: se i base rate differiscono, in genere serve un classificatore con soglie diverse per gruppo (post-processing) per soddisfarla.

In Fairlearn:

from fairlearn.metrics import equalized_odds_difference
gap = equalized_odds_difference(y_true, y_pred, sensitive_features=race)

2.3 Predictive Parity (Calibration)

P(y=1y^=1,A=a)=P(y=1y^=1,A=b)P(y=1 \mid \hat{y}=1, A=a) = P(y=1 \mid \hat{y}=1, A=b)

Tradotto: dato che il modello segnala "a rischio", la probabilita' che sia veramente a rischio e' uguale fra gruppi (precision uguale).

  • Quando ha senso: quando il messaggio del modello viene comunicato a un decisore umano. Se il clinico sente "alto rischio", la probabilita' che sia veramente alto rischio deve essere la stessa indipendentemente dalla razza.
  • Quando fallisce: e' (in genere) incompatibile con Equalized Odds, vedi 2.4.

2.4 Impossibility Theorem (Chouldechova 2017, Kleinberg et al. 2017)

Se i base rate P(y=1A=a)P(y=1 \mid A=a) differiscono fra gruppi e il modello non e' perfetto, non si possono soddisfare contemporaneamente Equalized Odds, Predictive Parity e Calibration.

Su Diabetes-130 i base rate differiscono fra race. Conseguenza pratica: dobbiamo scegliere quale criterio rispettare.

3. Quale criterio scegliere in contesto clinico

Per il programma di follow-up post-dimissione la domanda chiave e':

Vogliamo che ogni paziente realmente a rischio abbia la stessa probabilita' di essere intercettato, indipendentemente dalla razza?

Risposta: si, e questo e' Equalized Odds.

L'alternativa (Demographic Parity) significherebbe assegnare gli stessi tassi di alert ai gruppi indipendentemente dal rischio reale: in pratica, sotto-segnalare i gruppi con base rate piu' alto (= disparita' clinica).

Predictive Parity e' valida ma piu' "orientata al messaggio": il clinico sente "alert" e si fida ugualmente. Importante ma secondaria rispetto a non perdere casi reali.

Posizione del progetto: priorita' a Equalized Odds, monitor di Demographic Parity e Predictive Parity per completezza.

4. Cosa misura concretamente Fairlearn

from fairlearn.metrics import MetricFrame, selection_rate, true_positive_rate, false_positive_rate

mf = MetricFrame(
metrics={
"selection_rate": selection_rate,
"tpr": true_positive_rate,
"fpr": false_positive_rate,
},
y_true=y_test, y_pred=y_pred, sensitive_features=race_test,
)
mf.by_group # tabella metrica x gruppo

Output tipico su Diabetes-130 (alla soglia 0.5):

raceselection_ratetprfprprecision
Caucasian0.180.550.120.30
AfricanAmerican0.200.620.130.32
Hispanic0.120.420.080.28
Asian0.100.380.070.25

Diagnostica:

  • selection_rate varia fra 0.10 e 0.20 -> Demographic Parity gap = 0.10. Sopra la soglia tipica di "attenzione" (>0.05).
  • tpr varia fra 0.38 e 0.62 -> 24 punti di gap. Equalized Odds significativamente violata.
  • precision varia fra 0.25 e 0.32 -> Predictive Parity gap = 0.07.

5. Mitigation: cosa fare se il gap e' grande

Tre famiglie di approcci (Fairlearn supporta tutte e tre):

5.1 Pre-processing

Modifica i dati prima del training. Esempio: rimuovere correlazioni della feature target con l'attributo protetto.

  • Pro: agnostico al modello.
  • Contro: degrada le performance assolute.

5.2 In-processing

Ottimizza un obiettivo che includa un termine di fairness.

from fairlearn.reductions import ExponentiatedGradient, EqualizedOdds
mitigator = ExponentiatedGradient(LogisticRegression(), constraints=EqualizedOdds())
  • Pro: trade-off accuracy/fairness piu' efficiente.
  • Contro: solo per modelli con interfaccia compatibile.

5.3 Post-processing

Calibra soglie diverse per gruppo dopo il training.

from fairlearn.postprocessing import ThresholdOptimizer
postproc = ThresholdOptimizer(estimator=trained_model, constraints="equalized_odds")
  • Pro: non richiede ri-training.
  • Contro: usa esplicitamente l'attributo protetto al momento della decisione (disparate treatment in alcuni framework legali).

6. Comunicazione dei risultati

Un audit di fairness tecnico va tradotto in un linguaggio operativo per la direzione clinica:

"Il modello a soglia 0.5 produce tassi di alert simili fra gruppi razziali (gap 10 pp), ma la sensibilita' clinica (recall) sui pazienti AfricanAmerican e' del 62% rispetto al 38% degli Asian. Cio' significa che, su 100 pazienti Asian realmente riammessi, ne intercettiamo solo 38. Per uniformare la sensibilita' clinica fra gruppi, una soglia di lavoro post-processing abbasserebbe il cutoff per il gruppo Asian, aumentando alert e potenzialmente FP."

E' la traduzione che il decisore (medico, governance, comitato etico) puo' usare.

7. Limiti del fairness audit basato sui dati storici

  • Le etichette stesse possono essere biased: se in ospedali con piu' pazienti AfricanAmerican il personale e' inferiore, il readmitted osservato non e' quello clinicamente "vero" ma quello misurato.
  • L'attributo protetto race non e' biologicamente significativo: e' un costrutto sociale. La sua eventuale predittivita' codifica disparita' strutturali (accesso ai servizi, dieta, stress cronico) piu' che differenze biologiche.
  • Le metriche di fairness non sono comprehensive: catturano solo aspetti specifici. Servono comunque processi umani di review (algorithmic auditing).

8. Discussione etica: includere race come feature?

Opzione A — escludere race dal modello:

  • Argomento: principio di non-discriminazione diretta.
  • Rischio: se race e' correlata con altre feature predittive (es. medical_specialty, payer_code), il modello "ricostruisce" implicitamente la razza tramite proxy. Il bias resta, mascherato.

Opzione B — includere race:

  • Argomento: ignorare la razza significa fingere che le disparita' strutturali non esistano. Includerla puo' permettere al modello di correggere per quelle disparita' (in interazione con altre feature).
  • Rischio: se il modello viene comunicato a clinici, la presenza di race nei coefficienti puo' generare profezie che si autoavverano ("aspetto piu' problemi su questo paziente").

Non c'e' una risposta unica. Posizione del progetto: includere race nel modello, ma esplicitamente auditare le disparita' risultanti e documentarle come parte della consegna.

9. Riferimenti

  • Hardt, M., Price, E., Srebro, N. (2016). Equality of Opportunity in Supervised Learning. NeurIPS 29.
  • Chouldechova, A. (2017). Fair prediction with disparate impact: A study of bias in recidivism prediction instruments. Big Data, 5(2).
  • Kleinberg, J., Mullainathan, S., Raghavan, M. (2017). Inherent Trade-Offs in the Fair Determination of Risk Scores. ITCS '17.
  • Obermeyer, Z. et al. (2019). Dissecting racial bias in an algorithm used to manage the health of populations. Science, 366(6464).
  • Mehrabi, N. et al. (2021). A Survey on Bias and Fairness in Machine Learning. ACM Computing Surveys.
  • Fairlearn user guide: https://fairlearn.org/main/user_guide/