Explicabilitate SHAP

AI Explicabil în Python

Fouad Trad

Machine Learning Engineer

Introducere în SHAP

  • SHAPSHapley Additive exPlanations
  • Tehnică independentă de model
  • Utilizează valorile Shapley din teoria jocurilor
  • Valorile SHAP → cuantifică contribuția caracteristicilor la predicții

Logo SHAP

AI Explicabil în Python

Împărțirea profitului între membrii trupei

Imagine cu o trupă muzicală.

AI Explicabil în Python

Explainere SHAP

 

  • Calcularea valorilor SHAP
  • Explainere pentru arbori → modele bazate pe arbori

Imagine care arată că explainerele SHAP sunt împărțite în explainere generale, aplicabile oricărui model, și explainere specifice tipului de model, optimizate pentru anumite tipuri de modele.

AI Explicabil în Python

Setul de date privind admiterile

GRE Score TOEFL Score University Rating SOP LOR CGPA Chance of Admit Accept
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

  • rf_reg: prezice probabilitatea de admitere
  • rf_class: prezice acceptarea
  • X: dataframe cu caracteristici
AI Explicabil în Python

Calcularea valorilor SHAP

import shap
Regresie
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
Clasificare
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
AI Explicabil în Python

Înțelegerea rezultatelor SHAP

Regresie
print(shap_values_reg.shape)  
(400, 6)

Imagine cu valorile SHAP sub formă de tabel cu aceleași dimensiuni ca dataframe-ul X (număr de exemple, număr de caracteristici)

AI Explicabil în Python

Înțelegerea rezultatelor SHAP

Regresie
print(shap_values_reg.shape)  
(400, 6)

Imagine cu valorile SHAP sub formă de tabel cu aceleași dimensiuni ca dataframe-ul X (număr de exemple, număr de caracteristici)

Clasificare
print(shap_values_class.shape)
(400, 6, 2)

Selectarea valorilor clasei pozitive

positive_values = shap_values_class[:,:,1]
AI Explicabil în Python

Importanța caracteristicilor

mean_shap_values_class = np.abs(shap_values_class[:, :, 1]).mean(axis=0)
mean_shap_values_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X_train.columns, mean_shap_values_class) plt.bar(X_train.columns, mean_shap_values_reg)

Imagine cu importanța caracteristicilor pentru regresie și clasificare, evidențiind că scorul CGPA și scorul GRE sunt cei mai influenți factori în predicția admiterii.

AI Explicabil în Python

Să exersăm!

AI Explicabil în Python

Preparing Video For Download...