Creación de una referencia SHAP para los modelos en producción
Las explicaciones suelen ser de contraste, es decir, tienen en cuenta las desviaciones con respecto a una referencia. Para obtener información sobre las referencias de explicabilidad, consulte Referencias SHAP para la explicabilidad.
Además de proporcionar explicaciones para las inferencias por instancia, SageMaker Clarify también admite una explicación global de los modelos de ML que le ayuda a comprender el comportamiento de un modelo en su conjunto en términos de sus características. SageMaker Clarify genera una explicación global de un modelo de ML mediante la agregación de los valores Shapley en varias instancias. SageMaker Clarify admite las siguientes formas diferentes de agregación, que puede utilizar para definir referencias:
-
mean_abs
: media de los valores SHAP absolutos para todas las instancias. -
median
: mediana de los valores SHAP para todas las instancias. -
mean_sq
: media de los valores SHAP cuadrados para todas las instancias.
Una vez que haya configurado la aplicación para capturar datos de inferencia de transformación por lotes o en tiempo real, la primera tarea para supervisar la desviación en la atribución de características es crear una referencia que sirva para comparar. Esto implica configurar las entradas de datos, qué grupos son sensibles, cómo se capturan las predicciones y el modelo y sus métricas de sesgo posteriores al entrenamiento. Luego hay que empezar con el trabajo de referencia. El monitor de explicabilidad de modelos puede explicar las predicciones de un modelo implementado, ya que produce inferencias y detecta desviaciones en la atribución de características de forma regular.
model_explainability_monitor = ModelExplainabilityMonitor( role=role, sagemaker_session=sagemaker_session, max_runtime_in_seconds=1800, )
En este ejemplo, el trabajo de referencia de explicabilidad comparte el conjunto de datos de prueba con el trabajo de referencia de sesgo, por lo que utiliza la misma DataConfig
y la única diferencia es el URI de salida del trabajo.
model_explainability_baselining_job_result_uri = f"{baseline_results_uri}/model_explainability" model_explainability_data_config = DataConfig( s3_data_input_path=validation_dataset, s3_output_path=model_explainability_baselining_job_result_uri, label=label_header, headers=all_headers, dataset_type=dataset_type, )
Actualmente, el explicador de SageMaker Clarify ofrece una implementación escalable y eficiente de SHAP, por lo que la configuración de explicabilidad es SHAPConfig, que incluye lo siguiente:
-
baseline
: una lista de filas (al menos una) o el URI del objeto S3 que se utilizará como conjunto de datos de referencia en el algoritmo Kernel SHAP. El formato debe ser el mismo que el del conjunto de datos. Cada fila debe contener solo las columnas/valores de las características y omitir la columna/valores de la etiqueta. -
num_samples
: número de muestras que se utilizarán en el algoritmo Kernel SHAP. Este número determina el tamaño del conjunto de datos sintéticos generado para calcular los valores SHAP. -
agg_method: método de agregación para valores SHAP globales. Los siguientes valores son válidos:
-
mean_abs
: media de los valores SHAP absolutos para todas las instancias. -
median
: mediana de los valores SHAP para todas las instancias. -
mean_sq
: media de los valores SHAP cuadrados para todas las instancias.
-
-
use_logit
: Indicador de si la función logit se debe aplicar a las predicciones del modelo. El valor predeterminado esFalse
. Siuse_logit
esTrue
, los valores SHAP tendrán unidades logarítmicas de probabilidades. -
save_local_shap_values
(bool): indicador de si se deben guardar los valores SHAP locales en la ubicación de salida. El valor predeterminado esFalse
.
# Here use the mean value of test dataset as SHAP baseline test_dataframe = pd.read_csv(test_dataset, header=None) shap_baseline = [list(test_dataframe.mean())] shap_config = SHAPConfig( baseline=shap_baseline, num_samples=100, agg_method="mean_abs", save_local_shap_values=False, )
Inicie un trabajo de referencia. Se requiere la misma model_config
porque el trabajo de referencia básico de la explicabilidad necesita crear un punto de conexión de sombra para obtener predicciones para el conjunto de datos sintéticos generado.
model_explainability_monitor.suggest_baseline( data_config=model_explainability_data_config, model_config=model_config, explainability_config=shap_config, ) print(f"ModelExplainabilityMonitor baselining job: {model_explainability_monitor.latest_baselining_job_name}")