XGboost - Elección hecha por modelo

10

Estoy usando XGboost para predecir una variable objetivo de 2 clases en reclamaciones de seguros. Tengo un modelo (entrenamiento con validación cruzada, ajuste de hiperparámetros, etc.) que ejecuto en otro conjunto de datos.

Mi pregunta es :

¿Hay alguna manera de saber por qué un reclamo dado se ha visto afectado a una clase, es decir, las características que explican la elección realizada por el modelo?

El propósito es poder justificar la elección hecha por la máquina a un humano de terceros.

Gracias por tu respuesta.

Fabrice BOUCHAREL
fuente

Respuestas:

7

Te sugiero que vayas por Shap . Utiliza los valores de Shapley (concepto tomado de la teoría de juegos) para describir el comportamiento del modelo, y con eso puede explicar una sola predicción.

Su interfaz gráfica usa Force Plots, como la que ves a continuación. ingrese la descripción de la imagen aquí

La barra roja está construida por las características que llevan la predicción a valores positivos, y el azul por las otras.

En su caso (un clasificador), el número en negrita será el justo antes de la función sigmoide que limitará el valor de salida entre cero y uno (una clase u otra). Por lo tanto, no se asuste si en algunos casos será mayor que uno o negativo.

El tamaño de los segmentos representa cuánto contribuye esa característica a la predicción, y debajo de los segmentos se ve el nombre de la característica (ej. LSTAT) y su valor real (ej. 4.98). Entonces, en este caso, LSTAT es la característica media que lleva la predicción para ese elemento del conjunto de datos al valor de 24.41 (el número en negrita).

¡Disfrutar!

Vincenzo Lavorini
fuente
9

Puede usar la biblioteca ELI5 para explicar las contribuciones de funciones a las predicciones individuales para los modelos XGBoost.

Consulte Explicación de predicciones en los documentos, copiados a continuación:

Para tener una mejor idea de cómo funciona nuestro clasificador, examinemos las predicciones individuales con eli5.show_prediction():

from eli5 import show_prediction
show_prediction(clf, valid_xs[1], vec=vec, show_feature_values=True)

ingrese la descripción de la imagen aquí

Imran
fuente