Los modelos de aprendizaje automático (ML) son cada vez más complejos. De hecho, un modelo sofisticado (p. ej., impulso de XGBoost o aprendizaje profundo) generalmente conduce a predicciones más precisas que un modelo simple (p. ej., regresión lineal o árbol de decisiones).
Por lo tanto, existe una compensación entre el rendimiento de un modelo y su interpretabilidad. Lo que un modelo gana en rendimiento, lo pierde en interpretabilidad (a la inversa).
¿Qué es exactamente la “interpretabilidad del modelo”?
La interpretabilidad se define como la capacidad de los humanos para comprender las razones de una decisión tomada por un modelo. Este criterio se ha vuelto instrumental por muchas razones.
A nivel científico, el desarrollo del conocimiento y el progreso depende de una comprensión profunda del fenómeno estudiado. Por lo tanto, es inimaginable para un científico de datos permitir que un modelo de aprendizaje automático funcione sin buscar determinar las variables influyentes, o sin intentar verificar la consistencia de los resultados contra el conocimiento experto del campo, etc. Se trata de comprender y tener confianza. en – y prueba de – la consistencia del modelo.
- A nivel ético: imaginemos una situación en la que alguien sufre de cáncer. Se les niega el tratamiento por la sola decisión de un algoritmo. Además, este algoritmo es complejo y, por lo tanto, ningún cirujano puede justificar tal decisión. Esta situación no es aceptable.
- A nivel legislativo: El artículo 22 del Reglamento General de Protección de Datos (RGPD) establece que una persona no debe ser objeto de una decisión basada exclusivamente en el tratamiento automatizado y que emane únicamente de la decisión de una máquina.
En este capítulo, presentaremos dos métodos para interpretar modelos de aprendizaje automático: los algoritmos LIME y SHAP. Estos dos métodos operan a la salida de un modelo complejo, una caja negra con un funcionamiento poco conocido.
Antes de mirar las especificidades de cada algoritmo, le sugerimos que revise rápidamente lo que caracteriza a los principales métodos de interpretabilidad.
Métodos de interpretabilidad
Los diferentes métodos de interpretabilidad se pueden definir según las siguientes tipologías:
- Métodos de interpretación agnósticos versus específicos: los métodos agnósticos se pueden utilizar para cualquier tipo de modelo. Por el contrario, los modelos específicos solo se pueden usar para interpretar una familia específica de algoritmos.
- Métodos intrínsecos versus post-hoc: En los métodos intrínsecos, la interpretabilidad está directamente relacionada con la simplicidad del modelo; mientras que en los métodos post-hoc, el modelo no se puede interpretar porque es demasiado complejo desde el principio.
- Métodos locales versus globales: los métodos locales dan una interpretación para una sola observación, o para un pequeño número de ellas. En cambio, los métodos de interpretación global permiten explicar todas las observaciones al mismo tiempo, globalmente.
- Métodos a priori versus métodos a posteriori: Los enfoques a priori se utilizan sin suposiciones con respecto a los datos y antes de la creación del modelo. Por el contrario, los enfoques a posteriori se utilizan después de que se ha creado el modelo.
El estado actual del arte en torno a la interpretabilidad de los modelos de aprendizaje automático muestra que existe un fuerte deseo de mezclar los diferentes métodos: {intrínseco y global} o {post hoc, global y agnóstico} o incluso {post-hoc, local y agnóstico }.
LIMA
El algoritmo LIME (Local Interpretable Model-agnostic Explanations) es un modelo local que busca explicar la predicción de un individuo analizando su entorno.
LIME tiene la particularidad de ser un modelo:
- Interpretable. Proporciona una comprensión cualitativa entre las variables de entrada y la respuesta. Las relaciones de entrada-salida son fáciles de entender.
- Localmente sencillo. El modelo es globalmente complejo, por lo que es necesario buscar localmente respuestas más sencillas.
- Agnóstico. Es capaz de explicar cualquier modelo de aprendizaje automático.
Para hacer eso:
- 1er paso: el algoritmo LIME genera nuevos datos, en una vecindad cercana a la del individuo a explicar.
- 2º paso: LIME da lugar a un modelo transparente sobre la base de las predicciones del complejo modelo de “caja negra” que estamos tratando de interpretar. Por lo tanto, aprende utilizando un modelo simple y, por lo tanto, interpretable (por ejemplo, una regresión lineal o un árbol de decisión).
El modelo transparente, por tanto, actúa como un modelo sustituto con
el que interpretar los resultados del modelo complejo original.
El principal inconveniente del método LIME se relaciona con su operación local. Además, LIME no permite generalizar la interpretabilidad resultante del modelo local a un nivel más global.
Aplicación con Python
Hay una biblioteca LIME en Python. De acuerdo con el tipo de datos de entrada, puede utilizar:
- lime.lime_tabular para tablas de datos
- lime.lime_image para bases de datos de imágenes
- lime.lime_text para un corpus de texto.
Nuestro caso de uso: explicar la puntuación de abandono de un cliente en particular, en función de sus datos transaccionales. Es necesario formular diferentes preguntas: ¿Cómo se pueden explicar las diferentes clases de partituras? ¿Qué diferencia la puntuación de este cliente de la de otros clientes? ¿Qué comportamiento hace que este cliente en particular tenga una determinada puntuación?
LIME nos ha permitido explicar las predicciones de un modelo XGBoost complejo, que impulsa el aprendizaje automático.

Resultados:

La diferencia de color nos muestra cuales son los factores favorables y desfavorables para la interpretación del churn:
- en verde: los factores favorables ayudan a aumentar el valor previsto.
En nuestro ejemplo, el cliente realiza compras regulares. No hay anomalías para este cliente.
- en rojo: los factores desfavorables ayudan a aumentar la puntuación de riesgo de abandono del cliente.
En nuestro ejemplo, el cliente apenas ha realizado compras en la última semana. Esto debería sonar como una advertencia: el cliente puede estar perdiendo interés en la marca. Además, el valor de vida del cliente durante el último mes es bajo (186 €) en comparación con sus compras anteriores. Tenemos que encontrar una manera de recuperarlos.
forma
La implementación de SHAP se basa en un método utilizado para estimar los valores de Shapley. Existen diferentes métodos de estimación como KernelSHAP (método inspirado en LIME) o TreeSHAP (método basado en árboles de decisión).
Principio de estimación del valor de Shapley
Para un individuo dado, el valor de Shapley de una variable (o de varias variables) es su contribución a la diferencia entre el valor predicho por el modelo y la media de las predicciones de todos los individuos.
Para hacer eso:
- Paso 1 para calcular los valores de Shapley para un individuo en particular: simular diferentes combinaciones de valores para las variables de entrada
- Paso 2: Para cada combinación, calcule la diferencia entre el valor pronosticado y el promedio de las predicciones. El valor de Shapley de una variable, por lo tanto, corresponde al promedio de la contribución del valor, según las diversas combinaciones.
Aquí hay un ejemplo simple
Imagine que hemos creado un modelo para predecir los precios de los apartamentos en París. Para una observación dada, el modelo predice la clase “Precio > 12.500€/m2” con una puntuación del 70% para un apartamento con balcón (variable presencia_balcón = 1). Al cambiar el valor del balcón a 0 (sin balcón), la puntuación cae un 20 % y la contribución del valor del balcón = 1 es del 20 %.
De hecho, las cosas son más complicadas en la práctica, porque para obtener una estimación correcta de los valores de Shapley, necesitamos sumar todos los valores de cada variable del modelo y dividir la suma por el número de valores en el conjunto de datos. El tiempo de cálculo podría entonces volverse extremadamente importante.
Algunas líneas de codificación de Python para probar SHAP
En Python, las bibliotecas alibi y SHAP implementan los métodos para estimar los valores de Shaply KernelSHAP, TreeSHAP (para casos de uso basados en tablas de datos) y DeepSHAP (para casos de uso de aprendizaje profundo).
import shap
classifier_shap = shap.KernelExplainer(sklearn_regressor.predict
, data_train_X
shap_results = classifier_shap.shap_values(
data_test_X.iloc[0])
shap.waterfall_plot(classifier_shap.expected_
value,shap_values,data_test_X.iloc[0])
Para resumir…
En el aprendizaje automático, es importante encontrar un compromiso justo entre un modelo potente y un modelo interpretable.
Con LIME o SHAP, puede hacer que un modelo inicialmente complejo sea interpretable y, por lo tanto, promover su adopción por parte de los usuarios comerciales. Si comprender un modelo es esencial en un proceso científico, las restricciones legales ahora exigen que no se tome una decisión basándose únicamente en el resultado de un algoritmo automático.
Recuerda que el algoritmo SHAP actualmente cumple con los requisitos normativos impuestos por GDPR.
Si está interesado en este tema, lo invitamos a leer sobre otras formas de interpretar los modelos de aprendizaje automático, tales como: técnicas basadas en el análisis de “gráficos ICE y PDP”, las llamadas “importancia de la función de permutación”, “explicaciones contrafactuales”. ” o incluso “anclas”.

Los modelos predictivos que son demasiado complejos tienden a ser penalizados. Esto no solo se debe a que no se pueden generalizar para situaciones específicas del mundo real, sino también a que son difíciles de interpretar. Cuando tales métodos de interpretabilidad se asocian con modelos de predicción complejos, su contribución es invaluable. Esto nos permite evitar el costo de los conocimientos que no estarían disponibles para los responsables de la toma de decisiones comerciales.