XPER: revelando las fuerzas impulsoras del rendimiento predictivo | por Sébastien Saurin | Sep, 2024

A Nuevo método para descomponer tus métricas de rendimiento favoritas

Foto de Señorita Anamwong en 123RF

En coautoría con S. Hué, C. Hurlin y C. Pérignon.

La fiabilidad y la aceptabilidad de los sistemas de IA sensibles dependen en gran medida de la capacidad de los usuarios para comprender los modelos asociados, o al menos sus previsiones. Para desvelar las aplicaciones de IA opacas, hoy en día se utilizan comúnmente métodos de IA explicable (XAI), como herramientas de interpretación post-hoc (por ejemplo, SHAP, LIME), y los conocimientos generados a partir de sus resultados son ahora ampliamente comprendidos.

Más allá de los pronósticos individuales, en este artículo mostramos cómo identificar los impulsores de las métricas de desempeño (por ejemplo, AUC, R2) de cualquier modelo de clasificación o regresión utilizando la metodología eXplainable PERformance (XPER). Ser capaz de identificar las fuerzas impulsoras del desempeño estadístico o económico de un modelo predictivo es la base misma del modelado y es de gran importancia tanto para los científicos de datos como para los expertos que basan sus decisiones en dichos modelos. La biblioteca XPER que se describe a continuación ha demostrado ser una herramienta eficiente para descomponer las métricas de desempeño en contribuciones de características individuales.

Si bien se basan en los mismos principios matemáticos, XPER y SHAP son fundamentalmente diferentes y simplemente tienen objetivos diferentes. Mientras que SHAP señala las características que influyen significativamente en las predicciones individuales del modelo, XPER identifica las características que más contribuyen al rendimiento del modelo. Este último análisis se puede realizar a nivel global (modelo) o local (instancia). En la práctica, la característica que tiene el mayor impacto en los pronósticos individuales (por ejemplo, la característica A) puede no ser la que tenga el mayor impacto en el rendimiento. De hecho, la característica A impulsa las decisiones individuales cuando el modelo es correcto, pero también cuando el modelo comete un error. Conceptualmente, si la característica A afecta principalmente a las predicciones erróneas, puede clasificarse más abajo con XPER que con SHAP.

¿Para qué se utiliza una descomposición del rendimiento? En primer lugar, puede mejorar cualquier análisis de interpretabilidad post-hoc al ofrecer una visión más completa del funcionamiento interno del modelo. Esto permite una comprensión más profunda de por qué el modelo funciona o no de manera efectiva. En segundo lugar, XPER puede ayudar a identificar y abordar problemas de heterogeneidad. De hecho, al analizar valores XPER individuales, es posible identificar submuestras en las que las características tienen efectos similares en el rendimiento. Luego, se puede estimar un modelo separado para cada submuestra para mejorar el rendimiento predictivo. En tercer lugar, XPER puede ayudar a comprender el origen del sobreajuste. De hecho, XPER nos permite identificar algunas características que contribuyen más al rendimiento del modelo en la muestra de entrenamiento que en la muestra de prueba.

El marco XPER es un método con fundamento teórico que se basa en los valores de Shapley (Shapley, 1953), un método de descomposición de la teoría de juegos de coalición. Mientras que los valores de Shapley descomponen un resultado entre los jugadores de un juego, los valores XPER descomponen una métrica de rendimiento (por ejemplo, AUC, R2) entre las características de un modelo.

Supongamos que entrenamos un modelo de clasificación utilizando tres características y que su rendimiento predictivo se mide con un AUC igual a 0,78. Un ejemplo de descomposición XPER es el siguiente:

El primer valor XPER 𝜙₀ se denomina punto de referencia y representa el rendimiento del modelo si ninguna de las tres características proporcionó información relevante para predecir la variable objetivo. Cuando se utiliza el AUC para evaluar el rendimiento predictivo de un modelo, el valor del punto de referencia corresponde a una clasificación aleatoria. Como el AUC del modelo es mayor que 0,50, implica que al menos una característica contiene información útil para predecir la variable objetivo. La diferencia entre el AUC del modelo y el punto de referencia representa la contribución de las características al rendimiento del modelo, que se puede descomponer con valores XPER. En este ejemplo, la descomposición indica que la primera característica es el principal impulsor del rendimiento predictivo del modelo, ya que explica la mitad de la diferencia entre el AUC del modelo y una clasificación aleatoria (𝜙₁), seguida de la segunda característica (𝜙₂) y la tercera (𝜙₃). Estos resultados miden el efecto global de cada característica en el rendimiento predictivo del modelo y las clasifican desde la menos importante (la tercera característica) hasta la más importante (la primera característica).

Si bien el marco XPER se puede utilizar para realizar un análisis global del rendimiento predictivo del modelo, también se puede utilizar para proporcionar un análisis local a nivel de instancia. A nivel local, el valor XPER corresponde a la contribución de una instancia y una característica dadas al rendimiento predictivo del modelo. El punto de referencia representa entonces la contribución de una observación dada al rendimiento predictivo si la variable objetivo era independiente de las características, y la diferencia entre la contribución individual y el punto de referencia se explica por los valores XPER individuales. Por lo tanto, los valores XPER individuales nos permiten comprender por qué algunas observaciones contribuyen más al rendimiento predictivo de un modelo que otras, y se pueden utilizar para abordar problemas de heterogeneidad al identificar grupos de individuos para los cuales las características tienen efectos similares en el rendimiento.

También es importante señalar que XPER es independiente del modelo y de las métricas. Esto implica que los valores de XPER se pueden utilizar para interpretar el rendimiento predictivo de cualquier modelo econométrico o de aprendizaje automático, y para desglosar cualquier métrica de rendimiento, como las medidas de precisión predictiva (AUC, exactitud), las funciones de pérdida estadística (MSE, MAE) o las medidas de rendimiento económico (funciones de ganancias y pérdidas).

01 — Descargar Biblioteca ⚙️

El enfoque XPER se implementa en Python a través de Biblioteca XPERPara calcular los valores XPER, primero hay que instalar la biblioteca XPER de la siguiente manera:

pip install XPER

02 — Importar biblioteca 📦

import XPER
import pandas as pd

03 — Cargar conjunto de datos de ejemplo 💽

Para ilustrar cómo utilizar los valores XPER en Python, tomemos un ejemplo concreto. Consideremos un problema de clasificación cuyo objetivo principal es predecir el incumplimiento crediticio. El conjunto de datos se puede importar directamente desde la biblioteca XPER, como por ejemplo:

import XPER
from XPER.datasets.load_data import loan_status
loan = loan_status().iloc[:, :6]

display(loan.head())
display(loan.shape)

El objetivo principal de este conjunto de datos, dadas las variables incluidas, parece ser la construcción de un modelo predictivo para determinar el “estado del préstamo” de un prestatario potencial. En otras palabras, queremos predecir si una solicitud de préstamo será aprobada (“1”) o no (“0”) en función de la información proporcionada por el solicitante.

# Remove 'Loan_Status' column from 'loan' dataframe and assign it to 'X'
X = loan.drop(columns='Loan_Status')

# Create a new dataframe 'Y' containing only the 'Loan_Status' column from 'loan' dataframe
Y = pd.Series(loan['Loan_Status'])

04 — Estimar el modelo ⚙️

Luego, necesitamos entrenar un modelo predictivo y medir su desempeño para calcular los valores XPER asociados. Para fines ilustrativos, dividimos el conjunto de datos inicial en un conjunto de entrenamiento y uno de prueba y ajustamos un clasificador XGBoost en el conjunto de entrenamiento:

from sklearn.model_selection import train_test_split

# Split the data into training and testing sets
# X: input features
# Y: target variable
# test_size: the proportion of the dataset to include in the testing set (in this case, 15%)
# random_state: the seed value used by the random number generator for reproducible results
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.15, random_state=3)

import xgboost as xgb

# Create an XGBoost classifier object
gridXGBOOST = xgb.XGBClassifier(eval_metric="error")

# Train the XGBoost classifier on the training data
model = gridXGBOOST.fit(X_train, y_train)

05 — Evaluar el desempeño 🎯

La biblioteca XPER ofrece una forma intuitiva y sencilla de calcular el rendimiento predictivo de un modelo predictivo. Teniendo en cuenta que la métrica de rendimiento de interés son las áreas bajo la curva ROC (AUC), se puede medir en el conjunto de prueba de la siguiente manera:

from XPER.compute.Performance import ModelPerformance

# Define the evaluation metric(s) to be used
XPER = ModelPerformance(X_train.values,
y_train.values,
X_test.values,
y_test.values,
model)

# Evaluate the model performance using the specified metric(s)
PM = XPER.evaluate(["AUC"])

# Print the performance metrics
print("Performance Metrics: ", round(PM, 3))

06 — Calcular valores XPER ⭐️

Finalmente, para explicar las fuerzas impulsoras del AUC, los valores XPER se pueden calcular de la siguiente manera:

# Calculate XPER values for the model's performance
XPER_values = XPER.calculate_XPER_values(["AUC"],kernel=False)

« XPER_values ​​» es una tupla que incluye dos elementos: los valores XPER y los valores XPER individuales de las características.

Para casos de uso con más de 10 variables de características, se recomienda utilizar la opción predeterminada kernel=True para lograr una mayor eficiencia en el cálculo ➡️

07 — Visualización 📊

from XPER.viz.Visualisation import visualizationClass as viz

labels = list(loan.drop(columns='Loan_Status').columns)

Para analizar la fuerza impulsora a nivel global, la biblioteca XPER propone una gráfico de barras representación de valores XPER.

viz.bar_plot(XPER_values=XPER_values, X_test=X_test, labels=labels, p=5,percentage=True)

Para facilitar la presentación, las contribuciones de las características se expresan en porcentaje de la diferencia entre el AUC y su punto de referencia, es decir, 0,5 para el AUC, y se ordenan de mayor a menor. A partir de esta figura, podemos ver que más del 78% del rendimiento superior del modelo sobre un predictor aleatorio proviene de Historia de créditoseguido de Ingresos del solicitante contribuyendo con alrededor del 16% al rendimiento, y Ingresos del co-solicitante y Monto del préstamo Plazo cada representando menos del 6%. Por otro lado, podemos ver que la variable Monto del préstamo casi no ayuda al modelo a predecir mejor la probabilidad de impago, ya que su contribución es cercana a 0.

La biblioteca XPER también propone representaciones gráficas para analizar los valores XPER a nivel local. En primer lugar, una complot de fuerza se puede utilizar para analizar las fuerzas impulsoras del rendimiento para una observación dada:

viz.force_plot(XPER_values=XPER_values, instance=1, X_test=X_test, variable_name=labels, figsize=(16,4))

El código anterior representa gráficamente los valores XPER positivos (negativos) de la observación n.° 10 en rojo (azul), así como el valor de referencia (0,33) y la contribución (0,46) de esta observación al AUC del modelo. El rendimiento superior del prestatario n.° 10 se debe a los valores XPER positivos de Monto del préstamo, plazo, ingresos del solicitantey Historia de crédito. Por otro lado, Ingresos del co-solicitante y Monto del préstamo tuvo un efecto negativo y disminuyó la contribución de este prestatario.

Podemos ver que mientras Ingresos del solicitante y Monto del préstamo tener un efecto positivo En el AUC a nivel global, estas variables tienen un efecto negativo para el prestatario n.° 10. El análisis de valores XPER individuales puede, por lo tanto, identificar grupos de observaciones para las cuales las características tienen diferentes efectos en el rendimiento, lo que potencialmente pone de relieve un problema de heterogeneidad.

En segundo lugar, es posible representar los valores XPER de cada observación y característica en un único gráfico. Para ello, se puede recurrir a un complot de enjambre de abejas que representa los valores XPER para cada característica en función del valor de la característica.

viz.beeswarn_plot(XPER_values=XPER_values,X_test=X_test,labels=labels)

En esta figura, cada punto representa una observación. El eje horizontal representa la contribución de cada observación al rendimiento del modelo, mientras que el eje vertical representa la magnitud de los valores de las características. De manera similar al gráfico de barras mostrado anteriormente, las características se ordenan desde las que más contribuyen al rendimiento del modelo hasta las que menos contribuyen. Sin embargo, con el gráfico de enjambre también es posible analizar el efecto de los valores de las características en los valores XPER. En este ejemplo, podemos ver grandes valores de Historia de crédito se asocian con contribuciones relativamente pequeñas (en valor absoluto), mientras que los valores bajos conducen a contribuciones mayores (en valor absoluto).

Todas las imágenes, a menos que se indique lo contrario, son del autor.

Los colaboradores de esta biblioteca son:

[1] L. Shapley, Un valor para los juegos de n personas (1953), Contribuciones a la teoría de juegos, 2:307–317

[2] S. Lundberg, S. Lee, Un enfoque unificado para interpretar las predicciones de los modelos (2017)Avances en sistemas de procesamiento de información neuronal

[3] S. Hué, C. Hurlin, C. Pérignon, S. Saurin, Medición de las fuerzas impulsoras del desempeño predictivo: aplicación a la calificación crediticia (2023), Documento de investigación de la HEC de París n.º FIN-2022–1463