Visualización avanzada de interacciones de características con SHAP-IQ y SII

SHAP-IQ amplía valores de Shapley hasta interacciones de orden 4 en modelos ML, descomponiendo contribuciones individuales y combinadas. Integra Random Forest y visualización Waterfall para mejorar interpretabilidad y análisis local. https://tinyurl.com/4mfzj8sd

M
MIIA
editorial
2 de agosto de 2025·4 min de lectura
Visualización avanzada de interacciones de características con SHAP-IQ y SII

En este tutorial, aprenderemos a usar el paquete SHAP-IQ para descubrir y visualizar interacciones entre características en modelos de machine learning, empleando los Índices de Interacción de Shapley (SII), que amplían el análisis tradicional basado en valores de Shapley.

Los valores de Shapley son útiles para explicar la contribución individual de cada característica en un modelo de IA, pero no capturan cómo interactúan entre sí. Los índices de interacción van un paso más allá, separando el efecto individual de cada variable de las interacciones entre ellas, lo que brinda una comprensión más profunda. Por ejemplo, cómo la combinación de longitud y latitud puede influir en el precio de una casa.

Para esto, utilizamos el paquete shapiq, que nos permite calcular y explorar estas interacciones de Shapley en cualquier modelo.

Primero, instalamos las dependencias necesarias con:

```bash !pip install shapiq overrides scikit-learn pandas numpy ```

Luego, cargamos el conjunto de datos Bike Sharing disponible en OpenML. Después de cargar los datos, los dividimos en conjuntos de entrenamiento y prueba para poder entrenar y evaluar nuestro modelo.

```python import shapiq from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score from sklearn.model_selection import train_test_split import numpy as np

# Cargar datos X, y = shapiq.load_bike_sharing(to_numpy=True)

# División en entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ```

Entrenamos un modelo de Random Forest para predecir la variable objetivo y evaluamos su rendimiento:

```python # Entrenar modelo model = RandomForestRegressor() model.fit(X_train, y_train)

# Predicciones y_pred = model.predict(X_test)

# Evaluación mae = mean_absolute_error(y_test, y_pred) rmse = np.sqrt(mean_squared_error(y_test, y_pred)) r2 = r2_score(y_test, y_pred)

print(f"R² Score: {r2:.4f}") print(f"Mean Absolute Error: {mae:.4f}") print(f"Root Mean Squared Error: {rmse:.4f}") ```

A continuación, configuramos un explicador usando la clase `TabularExplainer` de shapiq para calcular valores de interacción de Shapley hasta un orden máximo de 4 (interacciones de hasta 4 características juntas). Esto nos permite entender cómo grupos de variables afectan conjuntamente las predicciones.

```python explainer = shapiq.TabularExplainer( model=model, data=X, index="k-SII", max_order=4 ) ```

Para ilustrar el análisis local, seleccionamos una instancia específica del conjunto de prueba (por ejemplo, la número 100) y mostramos su valor real, el valor predicho por el modelo y sus valores de características, lo que nos ayuda a contextualizar la explicación.

```python instance_id = 100 x_explain = X_test[instance_id] y_true = y_test[instance_id] y_pred = model.predict(x_explain.reshape(1, -1))[0]

print(f"Instancia {instance_id}, Valor real: {y_true}, Valor predicho: {y_pred}") for i, feature in enumerate(feature_names): print(f"{feature}: {x_explain[i]}") ```

Usando el método `explain` del explicador, calculamos los valores de interacción de Shapley para esa instancia, limitando el presupuesto de evaluaciones del modelo a 256 para optimizar el proceso.

```python interaction_values = explainer.explain(X[100], budget=256) print(interaction_values) ```

Para simplificar, también podemos obtener los valores de interacción de primer orden, que equivalen a los valores Shapley estándar y reflejan sólo la contribución individual de cada variable sin considerar interacciones.

```python explainer = shapiq.TreeExplainer(model=model, max_order=1, index="SV") si_order = explainer.explain(x=x_explain) si_order ```

Finalmente, visualizamos estos valores individuales con un gráfico Waterfall (de cascada), que desglosa la predicción final desde un valor base, sumando y restando la contribución de cada característica:

```python si_order.plot_waterfall(feature_names=feature_names, show=True) ```

En este gráfico, el valor base es la predicción esperada por el modelo sin información de las características (por ejemplo, 190.717), y vemos cómo cada característica empuja la predicción hacia arriba o hacia abajo. Por ejemplo, variables como el clima y la humedad pueden aumentar la predicción, mientras que la temperatura y el año pueden tener un impacto negativo.

Este tipo de análisis nos proporciona una visión clara de qué factores están impulsando la predicción y en qué dirección, ayudándonos a entender mejor cómo toma decisiones el modelo.

Así, con SHAP-IQ podemos no sólo explicar la contribución individual de las variables, sino también revelar y explorar cómo interactúan entre ellas para influir en las predicciones del modelo.

fuente original
https://www.marktechpost.com/2025/08/02/how-to-use-the-shap-iq-package-to-uncover-and-visualize-feature-interactions-in-machine-learning-models-using-shapley-interaction-indices-sii/
Prueba MIIA

Agentes de IA para WhatsApp, Instagram y Messenger. Configurados en 10 minutos.

Seguir leyendo

relacionado con #explicabilidad de modelos · #interacciones entre características · #valores de shapley
Prueba MIIA gratis →
WhatsApp