Alberi di decisione: una forma personalizzata

 Come in molti altri campi, anche nella classificazione di dati strutturati (binari o multiclasse) le reti ad apprendimento profondo permettono di ottenere delle prestazioni molto buone: purtroppo l'interpretabilità della loro inferenza è quasi sempre ardua. Esistono diversi scenari nei quali è preferibile avere un modello di più facile comprensione, anche per un uso non automatico: in questo caso, possono essere di aiuto gli alberi di decisione.

 Diverse librerie permettono di ottenere delle presentazioni leggibili degli alberi: spesso però i risultati sono ricchi di ulteriori informazioni statistiche che rendono la loro consultazione meno rapida per poter prendere le decisioni.

Di seguito sono riportati sia un albero di decisione completo che un suo frammento, relativi al dataset Heart Disease Prediction.

L'albero nella sua interezza: difficilmente consultabile con i dettagli interni a ciascun nodo

Come si può notare nel frammento seguente – più facilmente leggibile – vi sono appunto altre informazioni, come il Coefficiente di Gini, il numero di campioni interessati, i valori di altre grandezze e persino l'intensità del colore del nodo è funzione della confidenza nella predizione.

Abbiamo quindi sviluppato un formato di presentazione più compatto, utile per esempio quando una lettura più semplice aiuta nell'interpretare più velocemente un caso.

Un esempio per passi

Heart Failure Prediction Dataset è un celebre dataset tabellare per la classificazione binaria: ogni esempio, composto da un certo numero di feature, è classificato come appartenente o meno alla classe di rischio "arresto cardiaco". Abbiamo creato una versione modificata (hfpd_mod) con queste variazioni:

  • le feature binarie sono state convertite con valori convenzionali "0" e "1":
    • Sex: {'M' 'F'} → {0, 1}
    • ExerciseAngina: {'N' 'Y'} → {0, 1}
  • le feature multiclasse sono state convertite in feature binarie tramite one-hot encoding:
    • ChestPainType → CPT_ASY, CPT_ATA, CPT_NAP e CPT_TA
    • RestingECG v RECG_LVH, RECG_N (Normal) e RECG_ST
    • ST_Slope → STS_D (Down), STS_F (Flat) e STS_U (Up)
  • infine i nomi delle feature sono stati accorciati:
    • Age → A
    • RestingBP → RBP
    • Cholesterol → C
    • FastingBS → FBS
    • MaxHR → MHR
    • Oldpeak → OP
    • HeartDisease → HD
    • Sex → S
    • ExerciseAngina → EA
    • ChestPainType → CPT_ASY, CPT_ATA, CPT_NAP e CPT_TA
    • RestingECG → RECG_LVH, RECG_N (Normal) e RECG_ST
    • ST_Slope → STS_D (Down), STS_F (Flat) e STS_U (Up)

 Grazie alla nostra elaborazione, abbiamo ottenuto una presentazione semplificata per l'utilizzo manuale, corrispondente al seguente albero di decisione binario (i nodi di decisione, incluso il nodo radice, sono disposti in modo da cercare di minimizzare la dimenensione dell'albero).

Una versione ingrandita è disponibile

 I rami uscenti verso l'alto rispondono a True per la classe/nodo di provenienza ed essendo la predizione positiva un evento infausto, le foglie a True sono colorate in rosso, come si può meglio vedere dal seguente ingrandimento.

Conclusioni

 Questa breve presentazione di una soluzione classica, da noi personalizzata, permette di ottenere un comodo strumento per diversi casi nei quali è necessaria una forma esplicita di scelta. Sono possibili ulteriori ottimizzazioni e soluzioni più vicine al mondo dei grafi e, nel caso foste interessati a contattarci, saremo felici di ascoltarvi. 😎

--

Foto di Annie Spratt su Unsplash