Predizione Riammissione Ospedaliera a 30 Giorni
ML clinico fairness-aware per il rischio di riammissione di pazienti diabetici
Pipeline healthcare ML per predire riammissione a 30 giorni in pazienti diabetici. 101k encounter, audit fairness con Fairlearn (parità demografica <0.05), LightGBM + class imbalance.
Highlights
- 101.766 encounter da 130 ospedali USA (1999–2008), 50 feature cliniche e demografiche
- AUC-ROC 0.62–0.67, in linea con la letteratura sulla riammissione ospedaliera diabetici
- Class imbalance esplicito: 11% positive (riammessi entro 30 giorni)
- Fairness audit con Fairlearn: parità demografica gap <0.05 tra gruppi etnici e per età
- Feature engineering clinico: mappatura ICD-9 a macro-categorie, gestione missing >50%
- Group-aware train-test split che previene il leakage di pazienti tra split
- 5 notebook didattici + 7 articoli teorici (clinical framing, EDA, preprocessing, metriche, fairness)
- Pacchetto modulare `readmit_pipeline` con CLI + API di inferenza batch e single-patient
Cosa è il progetto
Pipeline ML healthcare per la predizione della riammissione ospedaliera entro 30 giorni in pazienti diabetici, con audit di fairness obbligatorio rispetto a etnia ed età. Risponde a un'esigenza concreta della Hospital Readmissions Reduction Program (HRRP) che penalizza gli ospedali con tassi elevati di riammissione: il modello identifica al momento della dimissione i pazienti ad alto rischio, abilitando interventi di follow-up preventivi (telemedicina, ambulatoriale, caregiver). Repo: github.com/fedcal/Predizione-della-riammissione-ospedaliera-a-30-Giorni.
Architettura della pipeline
- Data loading: 101.766 encounter × 50 feature da 130 ospedali (1999–2008)
- Data quality: mappatura ICD-9 a macro-categorie cliniche, gestione missing values (~97% missing su
weight), deduplicazione pazienti - Preprocessing: ColumnTransformer + group-aware split per evitare leak di pazienti
- Feature engineering: aggregati clinici, feature temporali su admissions precedenti
- Confronto modelli: Logistic Regression (interpretabile) → Random Forest → LightGBM
- Fairness audit: Fairlearn MetricFrame su demographic parity, equalized odds, predictive parity
- Threshold optimization: F-beta con β>1 per privilegiare sensibilità clinica
- Inference: scoring batch e single-patient via CLI
readmit-predict
Metriche e fairness
- AUC-ROC 0.62–0.67 (consistente con letteratura clinical readmission)
- AUC-PR: metrica primaria su classe sbilanciata 11%
- Recall ottimizzato (β>1) — penalizza più i falsi negativi (paziente ad alto rischio non flaggato)
- Demographic Parity gap < 0.05 tra gruppi etnici (Fairlearn)
- Equalized Odds verificato su age groups (≤30 / 30–60 / >60)
Use case business
Sistemi di supporto decisionale per ospedali che devono rispettare i target HRRP evitando penalità federali (riammissioni costano $20–40k per episodio). L'output del modello informa i protocolli di dimissione: pazienti ad alto rischio vengono inseriti automaticamente in programmi di telemedicina e follow-up ambulatoriale, riducendo sia i costi diretti sia le penalità regolatorie.
Etica e conformità
L'audit di fairness con Fairlearn è un requisito non negoziabile in healthcare ML: garantisce che il modello non discrimini sistematicamente alcuni gruppi (es. pazienti di etnia minoritaria con accesso storicamente ridotto a follow-up). La pipeline è documentata in modo da essere ispezionabile, riproducibile e conforme ai principi della EU AI Act (sistemi AI ad alto rischio in healthcare, Annex III).
Stack tecnologico completo
| Layer | Tecnologia | Note |
|---|---|---|
| Linguaggio | Python 3 | — |
| ML core | scikit-learn, LightGBM, XGBoost | — |
| Fairness | Fairlearn — MetricFrame, Demographic Parity, Equalized Odds | — |
| Validazione | Stratified k-fold CV con group-aware split (no patient leakage) | — |
| Class imbalance | Class weighting + SMOTE; F-beta β>1 (sensibilità prioritaria) | — |
| Documentazione | Docusaurus 3 + TypeScript + KaTeX | — |
| CLI | readmit-train, readmit-predict | — |


