Interpretación de modelos predictivos

Wednesday, November 28, 2018

Interpretación de modelos predictivos

Escrito por Carlos Gil Bellosta.

Se dice que hay dos motivos fundamentales para construir modelos estadísticos: para entender y para predecir. Obviamente, son motivos no necesariamente excluyentes: lo ideal sería poder construir modelos muy predictivos y muy interpretables a la vez. Desafortunadamente, esa combinación ideal ocurre muy raramente.



De hecho, interpretación y predicción dividen el mundo del análisis de datos aproximadamente por la misma línea que separa las dos culturas a las que me refería en una entrada anterior: a la estadística tradicional le preocupa mucho más la interpretación, en tanto que el machine learning está mucho más orientado a la predicción.

Así que, en la práctica, muchos científicos de datos actuales, con su inquebrantable monocultivo de técnicas tales como los boosted trees (p.e., XGBoost) y las redes neuronales, están prácticamente renunciando de partida a cualquier atisbo de interpretabilidad.

Sin embargo, hay muchos motivos para recuperar la interpretabilidad. Algunos son de naturaleza meramente epistémica; por ejemplo, en el estudio de las redes neuronales recurrentes para el análisis de texto, es posible, por ejemplo, descubrir e identificar neuronas que se activan cuando se ha abierto un paréntesis y comprobar cómo presionan a la red para cerrarlo posteriormente (¿y qué pasa cuando alguien abre un paréntesis (anidado) dentro de otro paréntesis?).

Existen incluso motivos que podrían calificarse de lúdicos. Por ejemplo, en A Neural Algorithm of Artistic Style se identifican capas de una red neuronal (convolucional esta vez) que contienen información sobre las formas que aparecen en una foto por un lado y de las texturas por otro. Lo cual permite mezclar ambas y generar imágenes tan llamativas como las que aparecen en Ostagram.

 Imagen creada por una red neuronal convolucional.
Figura 1: Imagen creada por una red neuronal convolucional.

Pero hay motivos mucho más serios. La creciente desconfianza hacia los algoritmos, las acusaciones de sesgo, de que pueden perpetuar ciertos prejuicios que se pensaban confinados a la subjetividad humana, etc. ha generado una presión creciente, a veces reflejada en la legislación, para que quienes sean evaluados por un algoritmo (p.e., a la hora de solicitar un seguro o una hipoteca) puedan exigir una explicación de cómo se ha llegado a la decisión que los afecta.

Así que, aunque el problema no es nuevo, han aparecido algoritmos (e implementaciones) para reinterpretar modelos opacos entre los que cabe citar DALEX, iml, lime (disponibles en R y/o Python). Es sintomático que estas implementaciones sean todas del último par de años y que la literatura sobre la que se apoyan sea toda también reciente: prácticamente toda, de la década actual. Sin embargo, la interpretación de modelos tiene una larga tradición en la estadística tradicional: en los ubicuos modelos lineales (o lineales generalizados), la interpretación es casi directa a partir de los coeficientes que se ajustan en el modelo, incluso cuando existen interacciones: coeficientes grandes corresponden (si las variables están mínimamente normalizadas) a las variables más importantes.

De hecho, medir la importancia de variables es uno de los primeros problemas de interpretabilidad al que se enfrentaron los algoritmos de la ciencia de datos: aunque solo sea como mecanismo de validación, es conveniente saber cuáles son las variables que más peso tienen en las predicciones: malo, por ejemplo, que en un modelo de predicción de producción fotovoltaica, la lectura del anemómetro pese más que la del heliómetro. El siguiente gráfico muestra la salida típica de la aplicación de un algoritmo para la estimación de la importancia de las variables de un modelo:

Ejemplo de gráfica  de estimación de importancia de las variables de un modelo.
Figura 2: Ejemplo de gráfica  de estimación de importancia de las variables de un modelo.

La importancia de las variables es una medida demasiado gruesa del efecto de las distintas variables en el modelo. Por ejemplo, no da información sobre la dirección de los efectos: p.e., ¿aumenta la mortalidad al aumentar la temperatura? ¿o se reduce?

Los gráficos de dependencia parcial, introducidos por J. Friedman en 2001, tratan de solucionar ese problema. Tienen como objetivo estudiar la evolución de la variable dependiente, la predicción, al ir variando una (o dos) de las variables independientes. El siguiente gráfico muestra cómo varía el precio de determinadas viviendas según se modifican algunas de las variables predictoras (una a una en los cuatro primeros subgráficos, y una pareja de ellos en el último):


Variación del precio de la vivienda según lo hacen distintas variables predictoras.
Figura 4: Variación del precio de la vivienda según lo hacen distintas variables predictoras.

El problema de este tipo de representaciones es el punto de referencia. Podemos hacer variar una variable (por ejemplo, la antigüedad de la vivienda) y ver observar que el precio tiende a subir. Pero bien puede suceder que ese efecto se de en los apartamentos situados en la zona centro y que el efecto sea el contrario en las afueras. Los gráficos de dependencia parcial recogerían un efecto promedio, que puede ser engañoso y enmascarar efectos contrarios en sujetos (o clases de sujetos) distintos. El problema consiste en que describen qué pasa en general, pero no en un caso de interés concreto.

Supongamos que las variables que considera un modelo a la hora de determinar si un individuo merece o no un préstamo están recogidas en el vector x. Se podría en tal caso tomar como referencia ese valor y ver qué ocurre con la predicción al modificar cada variable respecto a ese punto de referencia. Eso es lo que hace, por ejemplo, el paquete ceterisParibus de R,

Lime, DALEX o iml son implementaciones disponibles en R y/o Python que extienden esas ideas y permiten cuantificar el aporte de los atributos de un sujeto en la decisión final de un modelo, generando, típicamente, una salida de tipo gráfico del estilo de:


Figura 5: Aportación de las distintas variables a la respuesta del modelo.
Figura 5: Aportación de las distintas variables a la respuesta del modelo.


No es difícil encontrar ejemplos del uso de lime para explicar modelos de clasificación de imágenes u otros modelos más clásicos.

Para concluir, la existencia de estos algoritmos es prueba concluyente de que existía un problema que urgía resolver (el de la interpretabilidad de los modelos). Lo cual, hasta cierto punto, invalida y obliga a matizar la posición extrema de ciertos científicos de datos que defienden como objetivo único y último de su profesión el predecir con la mayor precisión posible. Eso sí, estos algoritmos, por muy bien que puedan explicar la predicción de cada sujeto (a quien se haya otorgado el derecho a reclamarla) se quedan cortos a la hora de explorar sesgos sistemáticos en los modelos. Pero esa es otra historia.



No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.

Para mantenerte al día con LUCA visita nuestra página web, y no olvides seguirnos en TwitterLinkedIn YouTube.

3 comments:

  1. Me recuerda a una presentación de la semana pasada: la dualidad humana (prediccion/prospección) adobada con la percepción que sesga la interpretación
    de los datos. Ha sido una buena lectura. :-)

    ReplyDelete
  2. ¡Gracias por tu comentario Santiago!. Ya sabes que el "conocimiento" consiste en "conectar": ideas, imágenes, lecturas. Nos alegra mucho aportar.

    ReplyDelete
  3. Excelente artículo Carlos. Con demasiada frecuencia se da más importancia al resultado que arroja el algoritmo, que a entender su significado y su origen. Es el facilisimo de lo inmediato.

    ReplyDelete