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}}