Explicabilidad con SHAP

IA explicable en Python

Fouad Trad

Machine Learning Engineer

Introducción a SHAP

  • SHAP → SHapley Additive exPlanations
  • Técnica agnóstica al modelo
  • Usa valores de Shapley de teoría de juegos
  • Valores SHAP → cuantifican la contribución de cada feature a la predicción

Logo de SHAP

IA explicable en Python

Repartir ganancias entre miembros de la banda

Imagen de una banda musical.

IA explicable en Python

Explicadores SHAP

 

  • Calcula valores SHAP
  • Tree explainers → modelos basados en árboles

Imagen que muestra que los explicadores SHAP se dividen entre explicadores generales aplicables a cualquier modelo y explicadores específicos optimizados para ciertos tipos de modelos.

IA explicable en Python

Dataset de admisiones

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: predice prob. de admisión
  • rf_class: predice aceptación
  • X: dataframe con features
IA explicable en Python

Obtener valores SHAP

import shap
Regresión
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
Clasificación
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
IA explicable en Python

Entender la salida de SHAP

Regresión
print(shap_values_reg.shape)  
(400, 6)

Imagen que muestra valores SHAP como una tabla con las mismas dimensiones que el dataframe X (nº de muestras, nº de features)

IA explicable en Python

Entender la salida de SHAP

Regresión
print(shap_values_reg.shape)  
(400, 6)

Imagen que muestra valores SHAP como una tabla con las mismas dimensiones que el dataframe X (nº de muestras, nº de features)

Clasificación
print(shap_values_class.shape)
(400, 6, 2)

Selecciona valores de la clase positiva

positive_values = shap_values_class[:,:,1]
IA explicable en Python

Importancia de features

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)

Imagen que muestra la importancia de features para regresión y clasificación, destacando que CGPA y GRE son los factores más influyentes al predecir admisiones.

IA explicable en Python

¡Vamos a practicar!

IA explicable en Python

Preparing Video For Download...