XAI.get_feature_importance

XAI.get_feature_importance(feat_imp_mode='shap', shap_type='tree', n_weighted_kmeans=10, n_samples_deep=1000, n_repeats_permutation=5, perm_crit='mean')

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

Questo metodo calcola l’importanza di ciascuna feature utilizzando la tecnica specificata in feat_imp_mode. Gestisce l’aggregazione dei punteggi nel caso di One-Hot Encoding e normalizza i risultati.

Parameters:
  • feat_imp_mode (str, optional) –

    Metodo per calcolare l’importanza. Opzioni:

    • ’shap’: Calcola i valori SHAP aggregando per somma l’impatto di ciascuna feature sulla singola previsione.

    • ’permutation’: Misura l’importanza valutando quanto peggiora la performance del modello se i valori di una feature vengono mescolati casualmente.

    • ’gini’: Usa l’importanza basata sulla riduzione media dell’impurità di Gini nei nodi degli alberi (specifica per modelli ad albero come RandomForest/GradientBoosting).

    • ’coef’: Usa i coefficienti diretti del modello, che rappresentano il peso di ciascuna feature in modelli lineari.

    Default: ‘shap’.

  • shap_type (str, optional) –

    Tipo di SHAP explainer da usare se feat_imp_mode=’shap’:

    • ’tree’: Ottimizzato per modelli ad albero (es. LightGBM, XGBoost, CatBoost, RandomForest).

    • ’kernel’: Model-agnostic, può spiegare qualsiasi modello black-box.

    • ’deep’: Per modelli di deep learning (TensorFlow/Keras, PyTorch).

    Default: ‘tree’.

  • n_weighted_kmeans (int, optional) – Numero di centroidi usati nei raggruppamenti nei dati di background per shap_type=’kernel’. Default: 10.

  • n_samples_deep (int, optional) – Numero di campioni usati nei raggruppamenti nei dati di background per shap_type=’deep’. Default: 1000.

  • n_repeats_permutation (int, optional) – Numero di ripetizioni per calcolare la Permutation Importance per ciascuna feature. Usato solo se feat_imp_mode=’permutation’. Default: 5.

  • perm_crit (str, optional) –

    Criterio per aggregare i punteggi delle ripetizioni di Permutation Importance. Opzioni:

    • ’mean’

    • ’max’

    • ’min’.

    Usato solo se feat_imp_mode=’permutation’. Default: ‘mean’.

Returns:

Un dizionario contenente i risultati dell’analisi. Contiene:

  • Il tipo di importanza usata (shap, gini o coef)

  • Un dizionario contenente le feature con il loro score di importanza

  • Lo score del modello (se il metodo get_score è stato chiamato)

Return type:

dict

Note

  • È necessario aver eseguito il metodo fit con successo prima di chiamare questa funzione.

  • Se è stato applicato One-Hot Encoding (nel metodo fit con il parametro categorical_ohe=True), l’importanza delle feature OHE derivate viene sommata per creare un unico valore attribuito alla feature categorica originale.

  • I punteggi di importanza (‘gini’, ‘permutation’, ‘shap’, ‘coef’) vengono normalizzati per somma a 1.

  • La velocità del calcolo dei valori SHAP è veloce quando shap_type=tree. Per shap_type=kernel e shap_type=deep il calcolo è potenzialmente lento, specialmente con molti dati e richiedono un subset di dati di background.

Dati utilizzati per gli esempi:

>>> df_esempio
feature_num feature_cat pred_clf
0 1 A 0
1 3 B 1
2 1 A 0
3 1 B 0
4 1 B 0
5 3 A 1
6 1 B 0
7 1 B 0
8 1 B 0
9 3 A 1

Esempio:

>>> from sklearn.linear_model import LogisticRegression
>>> modelLR = LogisticRegression()
>>> from model_monitoring.XAI import XAI
>>> Xai = XAI(model_input='custom', model=modelLR)
>>> Xai.fit(df_esempio.drop(columns=['pred_clf']),df_esempio['pred_clf'], standardize=True)
>>> importance=Xai.get_feature_importance(feat_imp_mode='coef')
>>> importance
{'type': 'coef',
 'feat_importance': {'feature_num': 0.8989692717116683,
  'feature_cat': 0.1010307282883317}}