Explicador kernel de SHAP

IA explicable en Python

Fouad Trad

Machine Learning Engineer

Explicador kernel de SHAP

 

  • Obtiene valores SHAP para cualquier modelo

    • K vecinos más cercanos
    • Redes neuronales
    • Modelos basados en árboles
  • Más lento que los explicadores específicos por tipo

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

IA explicable en Python

Cardiopatía

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

mlp_clf: perceptrón multicapa que predice riesgo de cardiopatía

IA explicable en Python

Cargos de seguro

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

 

mlp_reg: perceptrón multicapa que predice cargos de seguro

IA explicable en Python

Creación de explicadores kernel

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Función de predicción del modelo, # Resumen representativo del dataset )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Función de predicción del modelo, # Resumen representativo del dataset )
IA explicable en Python

Creación de explicadores kernel

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Resumen representativo del dataset
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Resumen representativo del dataset
)


IA explicable en Python

Creación de explicadores kernel

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  shap.kmeans(X, 10)
)


shap_values_reg = explainer.shap_values(X)
MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  shap.kmeans(X, 10)
)


shap_values_cls = explainer.shap_values(X)
IA explicable en Python

Importancia de variables

MLPRegressor
mean_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X.columns, mean_reg)

Imagen con un diagrama de barras de importancia de variables en regresión, donde fumar y la edad son los factores más influyentes para predecir los cargos.

MLPClassifier
mean_cls = np.abs(shap_values_cls[:,:,1]).mean(axis=0)

plt.bar(X.columns, mean_cls)

Imagen con un diagrama de barras de importancia de variables en clasificación, donde el tipo de dolor de pecho y la talasemia son los factores más influyentes para predecir los cargos.

IA explicable en Python

Comparación con enfoques específicos del modelo

Regresión lineal
plt.bar(X.columns, np.abs(lin_reg.coef_))

Imagen con un diagrama de barras de importancia de variables usando un modelo de regresión lineal, donde fumar y la edad son los factores más influyentes para predecir los cargos.

Regresión logística
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Imagen con un diagrama de barras de importancia de variables en clasificación, donde el tipo de dolor de pecho es el factor más influyente para predecir los cargos.

IA explicable en Python

¡Vamos a practicar!

IA explicable en Python

Preparing Video For Download...