Créer une référence SHAP pour les modèles en production - Amazon SageMaker

Créer une référence SHAP pour les modèles en production

Les explications sont généralement contrastives. Autrement dit, elles tiennent compte des écarts par rapport à une référence. Pour de plus amples informations sur les références d'explicabilité, veuillez consulter Bases de référence SHAP pour l'explicabilité.

Outre la fourniture d'explications sur les inférences par instance, SageMaker Clarify prend également en charge l'explication globale des modèles ML pour vous aider à comprendre le comportement d'un modèle et de ses fonctions. SageMaker Clarify génère une explication globale d'un modèle ML en agrégeant les valeurs de Shapley sur plusieurs instances. SageMaker Clarify prend en charge les différentes méthodes d'agrégation suivantes, qui sont utiles pour définir des références :

  • mean_abs - Moyenne des valeurs SHAP absolues pour toutes les instances.

  • median - Médiane des valeurs SHAP pour toutes les instances.

  • mean_sq - Moyenne des valeurs SHAP au carré pour toutes les instances.

Après avoir configuré votre application pour capturer des données d'inférence en temps réel, la première tâche de surveillance de la dérive dans l'attribution de fonctions consiste à créer une référence qui servira de comparaison. Cela implique de configurer les entrées de données, les groupes sensibles, la capture des prédictions, ainsi que le modèle et ses métriques de biais post-entraînement. Ensuite, vous devez démarrer la tâche de baselining. Le moniteur d'explicabilité de modèle peut expliquer les prédictions d'un modèle déployé qui produit des inférences et détecter régulièrement la dérive d'attribution de fonctions.

model_explainability_monitor = ModelExplainabilityMonitor( role=role, sagemaker_session=sagemaker_session, max_runtime_in_seconds=1800, )

Dans cet exemple, la tâche de baselining d'explicabilité partage le jeu de données de test avec la tâche de baselining de biais, il utilise donc la même DataConfig, la seule différence étant l'URI de sortie de la tâche.

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, )

Actuellement, l'explicateur SageMaker Clarify propose une mise en œuvre évolutive et efficace de SHAP. La configuration d'explicabilité est donc ShapConfig et comprend les éléments suivants :

  • baseline - Liste de lignes (au moins une) ou URI d'objet S3 à utiliser comme jeu de données de référence dans l'algorithme SHAP du noyau. Le format doit être identique au format du jeu de données. Chaque ligne doit contenir uniquement les colonnes/valeurs de fonctions et omettre les colonnes/valeurs d'étiquette.

  • num_samples - Nombre d'échantillons à utiliser dans l'algorithme SHAP du noyau. Ce nombre détermine la taille du jeu de données synthétique généré pour calculer les valeurs SHAP.

  • agg_method - Méthode d'agrégation pour les valeurs SHAP globales. Voici les valeurs valides :

    • mean_abs - Moyenne des valeurs SHAP absolues pour toutes les instances.

    • median - Médiane des valeurs SHAP pour toutes les instances.

    • mean_sq - Moyenne des valeurs SHAP au carré pour toutes les instances.

  • use_logit - Indicateur signifiant si la fonction logit doit être appliquée aux prédictions du modèle. La valeur par défaut est False. Si use_logit est True, les valeurs SHAP auront des unités log-odds.

  • save_local_shap_values (bool) - Indicateur signifiant s'il faut enregistrer les valeurs SHAP locales à l'emplacement en sortie. La valeur par défaut est False.

# 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, )

Démarrez une tâche de baselining. La model_config doit être la même, car la tâche de baselining d'explicabilité doit créer un point de terminaison fantôme pour obtenir des prédictions pour le jeu de données synthétiques généré.

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}")