Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Al interpretar el resultado de los datos predictivos, asegúrese de realizar cada paso con cuidado. Para satisfacer a los usuarios, es necesario proporcionar una visión fácil de entender. Puede hacerlo mejorando el proceso de su modelo. Está bien concentrarse en modelos simples en lugar de complejos. Por ejemplo, los modelos lineales le ayudarán a una interpretación fácil. Sin embargo, con una cantidad excesiva de datos, el uso de modelos complejos conlleva numerosas ventajas. Con un modelo de este tipo, puede llevar su delantera a la precisión y a la interpretabilidad de los resultados. Puede elegir entre numerosos métodos diferentes para resolver problemas complejos. Sin embargo, estas soluciones no implican cómo se relacionan estos métodos entre sí. Además, no hay datos que respalden por qué un método es mejor que otro.
La construcción del SHAP se inspira en el marco unificado anterior. Este nuevo enfoque del marco SHAP utiliza los valores Shapely. A continuación, puedes entender la definición de SHAP y cómo puedes implementar el concepto con el paquete de Python.

Qué es SHAP?

Shapley Additive exPlanations o SHAP es un enfoque utilizado en la teoría de juegos. Con SHAP, puedes explicar la salida de tu modelo de aprendizaje automático. Este modelo conecta la explicación local de la asignación óptima de créditos con la ayuda de los valores Shapely. Este enfoque es muy eficaz con la teoría de juegos.

Cómo puede calcular los valores Shapely

SHAP es un valor destacado de la contribución marginal media entre todas las combinaciones de la característica que son posibles. A continuación, vamos a discutir cómo SHAP o Shapely Additive exPlanations se está convirtiendo en una técnica popular en el aprendizaje de la máquina. Podemos entender el concepto con el siguiente ejemplo:
Podemos considerar los puntos que anota un equipo en cada partido de una temporada. Supongamos que queremos encontrar la puntuación media del jugador A y su contribución como puntuación del equipo en un partido. Para ello, necesitamos encontrar la contribución del jugador A en la asociación del jugador B y del jugador C.

NOTA

Mientras realizas el experimento, necesitas asegurarte de las siguientes condiciones sobre los partidos:

  1. Antes de realizar el experimento, tienes que suponer que la prueba de los jugadores ya está completa
  2. También es necesario asumir que cada jugador puede actuar en al menos un partido para que podamos basar el resultado en datos relevantes.
  3. Debe haber un partido en el que un jugador no esté disponible mientras que los otros dos sí lo estén.
  4. A continuación encontrará sólo un ejemplo. Se puede tomar cualquier métrica según la clasificación del torneo. A continuación encontrará el total de puntos como métrica:
    Paso 1: Cuando el jugador A no está jugando, pero los jugadores B y C están jugando en una combinación.
    En esta condición, necesitamos tomar el promedio de puntos de los partidos. Hay que recordar que el jugador A no está jugando, por lo que la media sólo incluirá las puntuaciones del jugador B, y del C.También se puede tomar una única muestra aleatoria para encontrar la respuesta. En este ejemplo, supondrás una puntuación total media igual a 60 puntos.
    Paso 2: Cuando el jugador C no está jugando, pero los jugadores A y B están jugando en una combinación.
    Ahora consideraremos la media de los jugadores A y B, mientras el jugador C no está jugando. Supongamos que la puntuación total del equipo es de 90 puntos.
    Como todos los jugadores actuaron en alguno de los partidos, ahora podemos hallar el total de puntos del jugador A restando 85 a 65. La respuesta sería 30 puntos. También puedes realizar el experimento calculando la media del experimento varias veces y encontrando la diferencia.

Implementación de los códigos

En primer lugar, necesitas importar todas las librerías necesarias con la ayuda de los siguientes códigos:
import pandas as pd
importar numpy como np
importar shap
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from xgboost.sklearn import XGBRegressor
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
from sklearn import tree

import matplotlib.pyplot as plt
%matplotlib inline
importar advertencias
warnings.filterwarnings(‘ignorar’)

Pre-procesar los datos después de la lectura

El siguiente ejemplo es sobre el sector inmobiliario. Sin embargo, puede utilizar cualquier conjunto de datos para encontrar la salida con este método. Esto es sólo un ejemplo, por lo que la imputación y el preprocesamiento no son importantes. Pero cuando se trata de una prueba original, es necesario seguir el procedimiento completo:

Leer los datos

data = pd.read_csv(‘data.csv’)# Eliminar las características con altos valores nulos
data.drop([‘PoolQC’, ‘MiscFeature’, ‘Fence’, ‘FireplaceQu’,
‘Fachada’], inplace=True, axis=1)# Eliminar los valores nulos
data.dropna(inplace=True)# Preparar X e Y
X = pd.get_dummies(data)
X.drop([‘Precio de venta’], inplace=True, axis=1)
y = data[‘Precio de venta’]

Ajustar el modelo

En este paso tienes que ajustar el modelo con el conjunto de datos:
model = XGBRegressor(n_estimators=1000, max_depth=10, learning_rate=0.001)# Ajustar el modelo
model.fit(X, y)

Características importantes de los valores Shap

Ahora, es necesario utilizar la biblioteca SHAP. Esta es la biblioteca más poderosa disponible. Comprueba los gráficos que ofrecen.

  • Primero, necesitas iniciar un código de visualización JS en tu librería.

cargar el código de visualización JS en el cuaderno

shap.initjs()

  • Ahora puedes explicar la predicción de tu modelo.
  • Puedes empezar recogiendo los valores de SHAP y el explicador
    shap_values.
    explainer = shap.TreeExplainer(model)
    shap_values = explainer.shap_values(X)

Trazar los resultados

Forzar el trazado
i = 5
shap.force_plot(explainer.expected_value, shap_values[i], features=X.iloc[i], feature_names=X.columns)

Conclusión

Con la ayuda de la explicación anterior, puede ver las características que contribuyen a encontrar la salida de su modelo y empujar el valor base. El valor base es la salida media del modelo que recibimos con la ayuda de los datos de entrenamiento.