# SHAP

SHAP es una librería para realizar inteligencia artificial explicable (XAI por sus siglas in inglés eXplainable Artificial Intelligence). Utiliza cálculos del campo de la teoría de juegos para averiguar qué variables tienen más influencia en las predicciones de las técnicas de machine learning.

## SHAP (Descripción)

Este framework permite que cualquier algoritmo de Aprendizaje Automático sea esencialmente “explicado” “Al proporcionar visualizaciones intuitivas e interactivas que apuntan a mostrar qué características son más relevantes para una determinada predicción y para el modelo en su conjunto.
El objetivo de SHAP es explicar la predicción de una instancia x calculando la contribución de cada característica a la predicción. El método de explicación SHAP calcula los valores de Shapley a partir de la teoría de juegos de coalición. Los valores de características de una instancia de datos actúan como jugadores en una coalición. Los valores de Shapley nos dicen cómo distribuir equitativamente el "pago" (= la predicción) entre las funciones. Un jugador puede ser un valor de característica individual, p. Ej. para datos tabulares. Un jugador también puede ser un grupo de valores de características. Por ejemplo, para explicar una imagen, los píxeles se pueden agrupar en superpíxeles y la predicción se distribuye entre ellos. Una innovación que SHAP trae a la mesa es que la explicación del valor de Shapley se representa como un método de atribución de características aditiva, un modelo lineal. Esa vista conecta LIME y Shapley Values.

## Ventajas

Dado que SHAP calcula los valores de Shapley, se aplican todas las ventajas de los valores de Shapley: SHAP tiene una base teórica sólida en la teoría de juegos. La predicción se distribuye equitativamente entre los valores de las características. Obtenemos explicaciones contrastivas que comparan la predicción con la predicción promedio.
SHAP conecta los valores de LIME y Shapley. Esto es muy útil para comprender mejor ambos métodos. También ayuda a unificar el campo del aprendizaje automático interpretable.
SHAP tiene una implementación rápida para modelos basados en árboles. Creo que esto fue clave para la popularidad de SHAP, porque la mayor barrera para la adopción de los valores de Shapley es el cálculo lento.
El rápido cálculo permite calcular los muchos valores de Shapley necesarios para las interpretaciones del modelo global. Los métodos de interpretación global incluyen la importancia de las características, la dependencia de las características, las interacciones, la agrupación y los gráficos de resumen. Con SHAP, las interpretaciones globales son consistentes con las explicaciones locales, ya que los valores de Shapley son la "unidad atómica" de las interpretaciones globales. Si usa LIME para explicaciones locales y gráficos de dependencia parcial más la importancia de la característica de permutación para las explicaciones globales, no tiene una base común.

## Desventajas

KernelSHAP es lento. Esto hace que KernelSHAP no sea práctico de usar cuando desea calcular valores de Shapley para muchas instancias. Además, todos los métodos SHAP globales, como la importancia de la característica SHAP, requieren calcular los valores de Shapley para muchas instancias.
KernelSHAP ignora la dependencia de funciones. La mayoría de los otros métodos de interpretación basados en permutación tienen este problema. Al reemplazar los valores de las características con valores de instancias aleatorias, generalmente es más fácil muestrear al azar de la distribución marginal. Sin embargo, si las características son dependientes, p. Ej. correlacionado, esto lleva a poner demasiado peso en puntos de datos poco probables. TreeSHAP resuelve este problema modelando explícitamente la predicción esperada condicional.
TreeSHAP puede producir atribuciones de características poco intuitivas. Si bien TreeSHAP resuelve el problema de extrapolar a puntos de datos poco probables, presenta un nuevo problema. TreeSHAP cambia la función de valor basándose en la predicción esperada condicional. Con el cambio en la función de valor, las entidades que no tienen influencia en la predicción pueden obtener un valor TreeSHAP diferente de cero.
Las desventajas de los valores de Shapley también se aplican a SHAP: los valores de Shapley pueden malinterpretarse y se necesita acceso a los datos para calcularlos para datos nuevos (excepto para TreeSHAP).

## Software

Los autores implementaron SHAP en el paquete shap Python. Esta implementación funciona para modelos basados en árboles en la biblioteca de aprendizaje automático scikit-learn para Python. El paquete shap también se usó para los ejemplos de este capítulo. SHAP está integrado en los marcos de refuerzo de árboles xgboost y LightGBM. En R, están los paquetes shapper y fastshap. SHAP también se incluye en el paquete R xgboost.