
XAI – Explainable Artificial Intelligence
Los modelos IA, a menudo, se comportan a modo black box, donde dan una respuesta pero no se tiene ninguna información de cómo han llegado a dicha conclusión. Esto es especialmente problemático en ciertos casos de uso donde las decisiones del modelo afectan de forma importante y directa a las personas, como por ejemplo en la concesión de una hipoteca.
Para ello, existe un campo XAI (Explainable Artificial Intelligence) que busca que los modelos IA sean comprensibles por los humanos. A este propósito, recientemente me topé con una librería Python que me pareció muy interesante. Aporta un valor añadido reseñable con poca complejidad y una curva de aprendizaje muy suave.
La librería de InterpretML (pip install interpret
) ofrece dos caminos principales:
- Modelos glassbox, que son intrínsecamente interpretables, como Explainable Boosting Machine (EBM). Permiten entender directamente cómo cada característica influye en las predicciones.
- Modelos blackbox + explicadores post-hoc: tras haber entrenado un modelo típico, opaco, a posteriori se usan técnicas para proporcionar interpretabilidad.
Aquí hablaré sobre mi prueba de concepto con los modelos glassbox, donde usé el dataset Iris (from sklearn.datasets import load_iris
) que trata de distinguir entre tres tipos de flores, usando solamente los datos de longitud y anchura tanto del sépalo como del pétalo.
En el caso de uso que comento, instancio la clase ExplainableBoostingClassifier
de interpret.glassbox
y entreno dicho modelo, para después ayudarme del método show
(from interpret import show
) para, en la ejecución, poder acceder a una url en localhost con una visualización interactiva. En concreto:
ebm_global = ebm.explain_global(name="EBM - Global (Iris)") # Siendo ebm el modelo entrenado.
ebm_local = ebm.explain_local(X_test.iloc[:5], y_test.iloc[:5], name="EBM - Local (Iris)") # Pasamos 5 ejemplos de tests para obtener la explicación local.
show(ebm_global) # Para la explicación global
show(ebm_local) # Para la explicación local
Lenguaje del código: PHP (php)
La explicación global nos muestra gráficas como:

Indicando, en ese caso, que la feature (es decir, la variable de entrada) de más importancia para el modelo, es en general, la anchura del pétalo; seguida de cerca por la longitud del pétalo y, ya a más distancia, las otras dos features. Esto nos quiere decir que la variable en la que más se ha fijado el modelo a la hora de poder distinguir los 3 tipos de flores es la anchura del pétalo.
La explicación local, de cada uno de los ejemplos que le hayamos pasado, nos grafica datos como estos:

Se trata de una predicción de un ejemplo de test donde se ha predicho que esos datos corresponden a un tipo de flor «0» (considerando 0, 1 y 2 como posibles opciones). Vemos en los colores azules que la mayoría de características han apoyado la predicción de que el tipo de la flor es el 0, a excepción de la anchura del sépalo, que apostaba hacia un tipo de flor número 2. Pero, de forma conjunta, el valor predicho resultó ser el 0.
Resulta una forma muy útil y fácil de aplicar para analizar los entresijos de nuestros modelos IA con los que convivimos a diario. Para ciertos campos, resulta un valor diferencial el saber por qué nuestras IAs están tomando ciertas decisiones.
Más recursos e información:
InterpretML
Wikipedia – Explainable Artificial Intelligence
IBM – ¿Qué es la IA explicable (XAI)?