Configuration des paramètres pour surveiller la dérive de biais - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des paramètres pour surveiller la dérive de biais

La surveillance des biais d'Amazon SageMaker Clarify réutilise un sous-ensemble des paramètres utilisés dans la configuration d'analyse deConfigurer l'analyse. Après avoir décrit les paramètres de configuration, cette rubrique fournit des exemples de fichiers JSON. Ces fichiers sont utilisés pour configurer les jeux de données CSV et JSON Lines afin de surveiller leur dérive de biais lorsque des modèles Machine Learning sont en production.

Les paramètres suivants doivent être fournis dans un fichier JSON. Le chemin d'accès au fichier JSON doit être fourni dans le paramètre ConfigUri de l'API ModelBiasAppSpecification.

  • "version" – (Facultatif) Version de schéma du fichier de configuration. Si elle n'est pas fournie, la dernière version prise en charge est utilisée.

  • "headers" – (Facultatif) Liste des noms de colonnes dans le jeu de données. Si dataset_type est "application/jsonlines" et que "label" est spécifié, le dernier en-tête devient l'en-tête de la colonne d'étiquettes.

  • "label" – (Facultatif) Attribut cible du modèle à utiliser pour les métriques de biais. Indiqué en tant que nom de colonne, en tant qu'index (si le format du jeu de données est CSV) ou en tant que JMESPath (si le format du jeu de données est JSON Lines).

  • "label_values_or_threshold" – (Facultatif) Liste des valeurs d'étiquette ou du seuil. Indique le résultat positif utilisé pour les métriques de biais.

  • "facet" – (Facultatif) Liste des fonctions qui sont des attributs sensibles, appelées facettes. Les facettes sont utilisées pour les métriques de biais sous forme de paires, et comprennent les éléments suivants :

    • "name_or_index" – Nom ou index de la colonne facette.

    • "value_or_threshold" – (Facultatif) Liste des valeurs ou des seuils que la colonne de facettes peut prendre. Indique le groupe sensible, tel que le groupe par rapport auquel le biais est mesuré. Si elles ne sont pas fournies, les métriques de biais sont calculées comme un groupe pour chaque valeur unique (plutôt que toutes les valeurs). Si la colonne facette est numérique, cette valeur de seuil sert de limite inférieure pour sélectionner le groupe sensible.

  • "group_variable" – (Facultatif) Nom de colonne ou index pour indiquer la variable de groupe à utiliser pour la métrique de biais Disparité démographique conditionnelle.

Les autres paramètres doivent être fournis dans EndpointInput (pour les points de terminaison en temps réel) ou BatchTransformInput (pour les tâches de transformation par lots) de l'API ModelBiasJobInput.

  • FeaturesAttribute – Ce paramètre est requis si le format des données d'entrée du point de terminaison est "application/jsonlines". Il s'agit du JMESPath utilisé pour localiser les colonnes de caractéristiques si le format du jeu de données est JSON Lines.

  • InferenceAttribute : emplacement d'index ou JMESPath dans la sortie du modèle pour l'attribut cible à utiliser pour surveiller les biais à l'aide des métriques de biais. S'il n'est pas fourni dans le cas accept_type CSV, il est supposé que la sortie du modèle est une valeur numérique unique correspondant à un score ou à une probabilité.

  • ProbabilityAttribute : index ou emplacement JMESPath dans la sortie du modèle pour les probabilités. Si la sortie du modèle est JSON Lines avec une liste d'étiquettes et de probabilités, par exemple, l'étiquette qui correspond à la probabilité maximale est alors sélectionnée pour les calculs de biais.

  • ProbabilityThresholdAttribute – (Facultatif) Valeur float indiquant le seuil de sélection de l'étiquette binaire dans le cas d'une classification binaire. La valeur par défaut est 0,5.

Exemples de fichiers de configuration JSON pour les jeux de données CSV et JSON Lines

Voici des exemples des fichiers JSON utilisés pour configurer les jeux de données CSV et JSON Lines afin de les surveiller pour détecter une dérive de biais.

Jeux de données CSV

Considérez un jeu de données comportant quatre colonnes de caractéristiques et une colonne d'étiquettes, où la première caractéristique et l'étiquette sont binaires, comme dans l'exemple suivant.

0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499, 0 1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713, 1 0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576, 1 1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697, 1

Supposons que la sortie du modèle comporte deux colonnes, la première correspondant à l'étiquette prédite et la seconde à la probabilité, comme dans l'exemple suivant.

1, 0.5385257417814224

Le fichier de configuration JSON suivant montre comment ce jeu de données CSV peut être configuré.

{ "headers": [ "feature_0", "feature_1", "feature_2", "feature_3", "target" ], "label": "target", "label_values_or_threshold": [1], "facet": [{ "name_or_index": "feature_1", "value_or_threshold": [1] }] }

L'étiquette prédite est sélectionnée par le paramètre "InferenceAttribute". La numérotation basée sur zéro est utilisée, donc 0 indique la première colonne de la sortie du modèle.

"EndpointInput": { ... "InferenceAttribute": 0 ... }

Vous pouvez également utiliser des paramètres différents pour convertir les valeurs de probabilité en étiquettes prédites binaires. La numérotation basée sur zéro est utilisée : 1 indique la deuxième colonne ; une valeur de ProbabilityThresholdAttribute de 0,6 indique qu'une probabilité supérieure à 0,6 prédit que l'étiquette binaire est 1.

"EndpointInput": { ... "ProbabilityAttribute": 1, "ProbabilityThresholdAttribute": 0.6 ... }

Jeux de données JSON Lines

Considérez un jeu de données comportant quatre colonnes de caractéristiques et une colonne d'étiquettes, où la première caractéristique et l'étiquette sont binaires, comme dans l'exemple suivant.

{"features":[0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499], "label":0} {"features":[1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713], "label":1} {"features":[0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576], "label":1} {"features":[1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697], "label":1}

Supposons que la sortie du modèle comporte deux colonnes, la première étant une étiquette prédite et la seconde une probabilité.

{"predicted_label":1, "probability":0.5385257417814224}

Le fichier de configuration JSON suivant montre comment ce jeu de données JSON Lines peut être configuré.

{ "headers": [ "feature_0", "feature_1", "feature_2", "feature_3", "target" ], "label": "label", "label_values_or_threshold": [1], "facet": [{ "name_or_index": "feature_1", "value_or_threshold": [1] }] }

Ensuite, la valeur de paramètre "features" dans EndpointInput (pour les points de terminaison en temps réel) ou BatchTransformInput (pour les tâches de transformation par lots) est utilisée pour localiser les caractéristiques dans le jeu de données, et la valeur de paramètre "predicted_label" sélectionne l'étiquette prédite à partir de la sortie du modèle.

"EndpointInput": { ... "FeaturesAttribute": "features", "InferenceAttribute": "predicted_label" ... }

Vous pouvez également convertir les valeurs de probabilité en étiquettes binaires prédites à l'aide de la valeur de paramètre ProbabilityThresholdAttribute. Une valeur de 0,6, par exemple, indique qu'une probabilité supérieure à 0,6 prédit que l'étiquette binaire est 1.

"EndpointInput": { ... "FeaturesAttribute": "features", "ProbabilityAttribute": "probability", "ProbabilityThresholdAttribute": 0.6 ... }