XAI

class model_monitoring.XAI.XAI(approach_type='supervised', model_input='default', model=None, use_cv=False, grid=None, cv_funct=<class 'sklearn.model_selection._search.RandomizedSearchCV'>, cv_scoring='auto', n_iter=40, cv_type=StratifiedKFold(n_splits=5, random_state=42, shuffle=True), algo_type='auto', dim_cat_threshold=None)

Classe per l’interpretabilità dei modelli di Machine Learning.

Questa classe facilita la comprensione del comportamento dei modelli di ML, principalmente attraverso il calcolo e l’analisi dell’importanza delle feature. Permette di addestrare un modello interno (LightGBM per default) o di utilizzare un modello custom. L’obbiettivo è quello di approssimare i risultati del modello originale con un altro modello addestrandolo (overfittando) sui dati originali come feature e le predizioni fatte dal modello originale come target.

Supporta diversi metodi per calcolare l’importanza delle feature:

  • Valori SHAP (SHapley Additive exPlanations):

Attribuisce a ciascuna feature il cambiamento nel valore atteso della predizione del modello, basandosi su principi della teoria dei giochi (valori di Shapley) per garantire equità e consistenza. Possono essere calcolati per modelli ad albero, per modelli generici, o per reti neurali.

  • Permutation Importance:

Misura l’importanza di una feature calcolando il calo di performance del modello (su un set di dati) quando i valori di quella specifica feature vengono mescolati casualmente (permutati), rompendo così la relazione tra la feature e il target.

  • Gini Importance (per modelli ad albero):

Specifica per modelli basati su alberi decisionali, quantifica quanto mediamente una feature contribuisce a ridurre l’impurità (es. Gini impurity o entropia) nei nodi degli alberi in cui viene utilizzata per lo split.

  • Coefficienti del modello (per modelli lineari):

Nei modelli lineari (come Regressione Lineare/Logistica), il coefficiente mostra l’impatto di una feature: indica di quanto varia la previsione del modello per ogni aumento di 1 unità della feature, se tutte le altre restano uguali. La grandezza del coefficiente (senza considerare il segno) misura quanto è forte questa influenza.

La classe gestisce anche la preparazione dei dati, inclusa la codifica One-Hot delle variabili categoriche e l’ottimizzazione degli iperparametri tramite cross-validation.

Note

  • Il flusso tipico è: inizializzare XAI, chiamare fit, chiamare get_feature_importance, e poi get_report, get_score, o plot.

  • Per l’approccio ‘unsupervised’ (clustering), viene addestrato un modello classificatore ausiliario per predire le etichette di cluster fornite.

Methods

__init__

Inizializza l'oggetto XAI configurando il modello e le opzioni di addestramento/interpretazione.

fit

Addestra il modello utilizzando i dati forniti e i parametri configurati nella classe.

get_feature_importance

Calcola e restituisce l'importanza delle feature del modello addestrato.

get_report

Restituisce il report dell'importanza delle feature come DataFrame pandas.

get_score

Calcola e restituisce uno score di performance del modello sui dati di addestramento.

plot

Genera e visualizza un grafico a barre orizzontali dell'importanza delle feature.