Sat. Nov 26th, 2022

Usemos trivia de barras para mostrar la información perdida por los valores de Shapley

Usaremos una representación cúbica de juegos para explicar la interpretación y las limitaciones de los valores de Shapley. Para usar el aprendizaje automático de manera responsable, debe tratar de explicar qué impulsa las predicciones de su modelo ML. Muchos científicos de datos y empresas de aprendizaje automático están reconociendo lo importante que es poder explicar, característica por característica, cómo reacciona un modelo a las entradas que recibe. Este artículo mostrará cómo los valores de Shapley, una de las técnicas de explicabilidad más comunes, pueden perder información importante al explicar un modelo. Luego, presentaremos los residuales de Shapley, una nueva técnica para medir qué tan bien los valores de Shapley están capturando el comportamiento del modelo, ¡junto con un código para comenzar a calcularlos! Considere el siguiente ejemplo del libro Interpretable Machine Learning de Christopher Molnar: una empresa de bicicletas compartidas entrena un modelo para predecir el número de bicicletas sacadas en un día determinado, utilizando funciones como información de temporada, el día de la semana, información meteorológica, etc. Luego, si su modelo predice un número de ciclistas inferior al promedio en algún día en el futuro, pueden averiguar por qué se produce esa puntuación inferior a la media: observando cómo reacciona el modelo a cada característica. ¿Fue por unas vacaciones? ¿Fue por el clima? Una forma común de calcular la importancia de cada una de las características de su modelo es usar valores Shapleyya que es un método que es 1) ampliamente aplicable a muchos problemas, 2) basado en una sólida base teórica y 3) fácilmente implementable con la biblioteca SHAP Python.El problema: En algunos escenarios, los valores de Shapley no expresan información sobre el comportamiento del modelo, porque solo devuelve una puntuación para una característica a la vez. Por ejemplo, en el escenario de bicicletas compartidas, estamos tratando el clima y el día de la semana como características independientes, pero a veces es la combinación de esas características lo que importa; y en esos escenarios en los que las combinaciones de funciones son más importantes que las funciones individuales en sí, los valores de Shapley pueden no explicar adecuadamente un modelo. Usemos una configuración más simple con menos funciones para analizar el problema con los valores de Shapley con más detalle. Me gusta asistir noches de trivia en algunos bares locales del barrio con diferentes compañeros de trabajo cada semana. Ha quedado bastante claro que algunos miembros de nuestro equipo aportan más que otros. ¿Podemos cuantificar el impacto que cada miembro del equipo tiene en el desempeño de trivia? Podemos usar los valores de Shapley para cada jugador con la siguiente interpretación: deben corresponder al cambio esperado en la puntuación al agregar ese jugador al equipo de trivia. Existen otras interpretaciones posibles*, pero usaremos esta. (*Nota: esta clase de métodos para calcular los valores de Shapley, llamados valores de Shapley “intervencionistas”, miden el “cambio esperado en la puntuación al agregar esta característica”. Se conoce un tipo diferente como valores de Shapley “condicionales”. La diferencia clave entre el método de intervención y el método condicional radica en cómo tratan una característica cuyo cambio esperado en la puntuación es cero: ¿cuál debería ser su valor de Shapley? ¿Cero? Si cree que la respuesta es “sí ”, use el método intervencionista. Si, por el contrario, cree que la característica aún podría tener importancia debido a las correlaciones, y si cree que esa importancia debería incluirse en su valor de Shapley, entonces considere usar el método condicional).Geométricamente, una forma útil de trazar todos estos puntajes de juegos de 3 jugadores con diferentes equipos es como puntos en un cubo, dispuestos de manera que los puntos vecinos difieran en un solo jugador. Luego, los caminos entre los puntos (también conocidos como los bordes del cubo) representarán el cambio en la puntuación al agregar un jugador a un equipo. (Nota: con dos jugadores, trazaríamos esto como un cuadrado. Con cuatro o más jugadores, tendríamos para trazar esto como un hipercubo) Llamemos a esta forma un GameCube; esta será una forma útil para nosotros porque tanto los valores de Shapley como los bordes de GameCube se corresponderán con el cambio en la puntuación al agregar un jugador.Figura 1: trazando cada puntaje de trivia en un vértice diferente de un cubo correspondiente a los jugadores presentes en el equipo esa noche. En nuestra historia, Reid solo tiene conocimientos sobre trivia deportiva, y GW sabe sobre películas, música, historia, geografía, literatura. — casi todo excepto curiosidades deportivas. Entonces, cuando Reid toca, mejora un poco la puntuación; cuando GW juega, aumenta mucho la puntuación. Y yo, bueno, principalmente estoy ahí por la cerveza y la compañía. Un valor de Shapley es una medida perfecta de explicabilidad solo cuando un jugador siempre contribuye con la misma cantidad al puntaje de un equipo. Y dado que el cambio de puntaje de cada jugador es constante en nuestra historia hasta ahora, podemos asignar un valor de Shapley de 1 a Reid, un valor de Shapley de 9 a GW y un valor de Shapley de 0 a Max. ¡Estos valores de Shapley representan el cambio esperado en la puntuación cuando cada jugador se une al equipo!Figura 2: Visualización del cambio en los puntajes del equipo al agregar a cada jugador. En términos más técnicos, un juego en el que el impacto de cada jugador es constante (como nuestra historia hasta ahora) se denomina “juego esencial”. Además, usaremos el símbolo ▽v para representar el “gradiente” de GameCube v, que calcula los valores a lo largo de los bordes entre los valores de los vértices, y usaremos ▽_player_v para representar los valores de borde para las direcciones de un jugador específico. y cero a lo largo de todos los demás bordes. Por ejemplo, el gradiente de GameCube ▽_Reid_ν representa todos los posibles cambios en la puntuación al agregar Reid.Figura 3: Expresar el cambio en las puntuaciones al agregar un jugador como el gradiente parcial de GameCube con respecto a cada jugador Debe esperar que la mayoría de las veces, las funciones con las que está trabajando no tengan un impacto constante en los resultados del modelo; en cambio, el impacto de una función generalmente depende de cuáles son las otras funciones.

Cambiemos nuestra historia.

Supongamos que el comportamiento de Max cambia según con quién está jugando. Cuando juega con GW, es bastante relajado, bebe su cerveza, se ocupa de sus propios asuntos y deja que GW haga la mayor parte del trabajo, por lo que no baja la puntuación. Pero cuando Max juega con Reid, se pone celoso de cuánto sabe Reid sobre deportes, por lo que Max comienza a hablar más, sugiriendo algunas respuestas incorrectas y ¡bajando el puntaje en 1!Figura 4: El nuevo GameCube con contribuciones inconsistentes de los jugadores En este nuevo GameCube, los bordes de GW son constantes, por lo que su valor de Shapley de 9 aún corresponde exactamente al cambio en la puntuación cuando juega. Pero las ventajas de Max y Reid no son constantes, porque su impacto en la partitura depende de con quién jueguen. Por lo tanto, nuestra forma de usar los bordes de GameCube para cuantificar lo que Max y Reid aportan ahora tiene un problema. Cuando los científicos de datos reales usan los valores de Shapley, resuelven este problema tomando la contribución promedio de un jugador a sus equipos, en GameCube. , esto significaría cuantificar la contribución de un jugador como los valores de borde promedio en su dirección. Entonces, en nuestro GameCube anterior, el valor Shapley de GW seguiría siendo 9 como antes, pero el valor Shapley de Reid ahora sería 0.5 y el valor Shapley de Max ahora sería -0.5. Para algunos casos de uso, la historia termina ahí: ¡la contribución promedio de un jugador a veces puede ser una buena cuantificación de su impacto! Sin embargo, esto puede causar un problema cuando se trata de confiar en los valores de Shapley. Porque podemos confiar en los valores de Shapley de GW más de lo que podemos confiar en los valores de Shapley de Max o Reid, ya que hay más consistencia en su contribución al equipo que en las contribuciones de Max o Reid. El residuo de Shapley es una medida de cuánto se desvían las ventajas de un jugador de ser constante: los residuos de Shapley más bajos significan que los valores de Shapley son casi perfectamente representativos de la contribución de la característica, mientras que los residuos de Shapley más altos significan que los valores de Shapley están perdiendo información importante del modelo: a saber, que la contribución de una característica depende de las otras características también. Los autores de la El documento original de residuos de Shapley formula esta información faltante como un término de error en una regresión de mínimos cuadrados. Por ejemplo, para el jugador Reid:▽_Reid_ν = ▽_ν_Reid + r_ReidEl lado izquierdo de esta ecuación es el mismo gradiente parcial que antes. El lado derecho de la ecuación es la suma del gradiente de un nuevo GameCube, ▽_ν_Reid, más un cubo residual, r_Reid, que mide la cantidad que nuestro juego se desvía de ser esencial con respecto a Reid.Figura 5: el cubo residual es la cantidad que un juego se desvía de la inesencialidad con respecto a un jugador determinado. La idea clave es que, si Reid tiene un impacto constante en el equipo, el cubo residual r_Reid será todo ceros. Por otro lado, si los valores en el cubo residual r_Reid se desvían de cero, entonces eso es una señal de que al valor Shapley de Reid le falta información sobre cómo el impacto de Reid depende de quién más esté jugando con Reid. Cuanto más altos sean los valores en el cubo residual, más dependerá la contribución de Reid de qué otros jugadores estén presentes.

Importaciones

Generar conjunto de datos sintéticos

Modelo de tren y explicación de KernelSHAP

Calcule los valores esperados de las coaliciones de características

Esto utiliza el explicador.synth_data, el conjunto de muestras de datos sintéticos generados por la biblioteca shap cuando se entrena al explicador. el valor esperado cuando no se utilizan funciones: la salida promedio del modelo). (Tenga en cuenta que convertimos las listas en cadenas, ya que las listas no son tipos que permiten hash en Python).

Control del progreso

Los valores_estimados_de_coalición deberían verse así:{‘[]’: 0,
‘[0]’: -0.3576234198270127,
‘[1]’: 0.010174318030605423,
‘[2]’: -0.08009846972721224,
‘[0 1]’: -0.34261386138613864,
‘[0 2]’: -0.37104950495049505,
‘[1 2]’: 0.14435643564356437,
‘[0 1 2]’: -0.396}

Crear objeto de hipercubo

Estamos usando datos tridimensionales, por lo que será solo un cubo. Pero este método se extiende a los hipercubos, y se vuelve más lento a medida que aumenta el número de dimensiones. Siéntase libre de usar el código para la clase python Hypercube en el apéndice de este artículo, o de escribir el suyo propio. Necesita colocar los valores_estimados_de_coalición en los vértices del cubo, y necesita calcular los valores de los bordes como la diferencia entre los valores de los vértices vecinos.

Calcule los residuos de Shapley

Para cada característica, minimice || ▼_feature_cube — ▼_cube_feature || para calcular el residual. Esto utiliza una función auxiliar llamada residual_norm definida en el apéndice al final de este artículo. Los valores de Shapley se han convertido en un método increíblemente popular y generalizable para explicar qué características son importantes para un modelo de aprendizaje automático. Al cuantificar su efectividad con los residuos de Shapley, podrá identificar con mayor precisión de dónde proviene exactamente el comportamiento de su modelo de aprendizaje automático y en qué conocimientos derivados de los valores de Shapley vale la pena confiar. Un agradecimiento especial a los autores del artículo original de los residuos de Shapley por su ¡trabajo! Todas las imágenes en la pieza son creadas por el autor. A continuación se muestra el código para el objeto Hypercube y otras funciones auxiliares, que puede usar con el código de inicio anterior para calcular los residuos de Shapley.