Parametri per monitorare la deriva del bias - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Parametri per monitorare la deriva del bias

Il monitoraggio delle distorsioni di Amazon SageMaker Clarify riutilizza un sottoinsieme dei parametri utilizzati nella configurazione di analisi di. File di configurazione dell'analisi Dopo aver descritto i parametri di configurazione, questo argomento fornisce esempi di file JSON. Questi file vengono utilizzati per configurare i set di dati CSV e JSON Lines per monitorarli e rilevare eventuali bias quando i modelli di machine learning sono in produzione.

I seguenti parametri devono essere forniti in un file JSON. Il percorso di questo file JSON deve essere fornito nel parametro ConfigUri dell'API ModelBiasAppSpecification.

  • "version": (facoltativo) versione dello schema del file di configurazione. Se non viene fornita, viene utilizzata l'ultima versione supportata.

  • "headers": (facoltativo) un elenco di nomi di colonne nel set di dati. Se dataset_type è "application/jsonlines" e "label" è specificato, l'ultima intestazione diventa l'intestazione della colonna delle etichette.

  • "label": (facoltativo) attributo di destinazione per il modello da utilizzare per i parametri di bias. Specificato come nome di colonna o indice (se il formato del set di dati è CSV) o come JMESPath (se il formato del set di dati è JSON Lines).

  • "label_values_or_threshold": (facoltativo) elenco dei valori o delle soglie delle etichette. Indica il risultato positivo utilizzato per i parametri di bias.

  • "facet": (facoltativo) un elenco di funzionalità che sono attributi sensibili, chiamate facet. I facet vengono utilizzati in coppia per i parametri di bias e includono quanto segue:

    • "name_or_index": nome o indice della colonna facet.

    • "value_or_threshold": (facoltativo) elenco di valori o soglie che la colonna facet può assumere. Indica il gruppo sensibile, ad esempio il gruppo in base al quale viene misurato il bias. Se non vengono forniti, i parametri di bias vengono calcolati come un gruppo per ogni valore univoco (anziché tutti i valori). Se la colonna facet è numerica, questo valore di soglia viene applicato come limite inferiore per selezionare il gruppo sensibile.

  • "group_variable": (facoltativo) Un nome di colonna o un indice per indicare la variabile di gruppo da utilizzare per il parametro di bias Disparità demografica condizionale.

Gli altri parametri devono essere forniti in EndpointInput (per gli endpoint in tempo reale) o BatchTransformInput (per i processi di trasformazione di batch) dell'API ModelBiasJobInput.

  • FeaturesAttribute: questo parametro è obbligatorio se il formato dei dati di input dell'endpoint è "application/jsonlines". Viene JMESPath utilizzato per individuare le colonne delle funzionalità se il formato del set di dati è JSON Lines.

  • InferenceAttribute— Indice o JMESPath posizione nell'output del modello per l'attributo target da utilizzare per il monitoraggio delle distorsioni mediante metriche di distorsione. Se non viene fornito nel caso di accept_type CSV, si presume che l'output del modello sia un singolo valore numerico corrispondente a un punteggio o a una probabilità.

  • ProbabilityAttribute— Indice o JMESPath posizione nell'output del modello per quanto riguarda le probabilità. Se l'output del modello è JSON Lines con un elenco di etichette e probabilità, ad esempio, per il calcolo del bias viene selezionata l'etichetta che corrisponde alla probabilità massima.

  • ProbabilityThresholdAttribute: (facoltativo) un valore in virgola mobile che indica la soglia per selezionare l'etichetta binaria, nel caso della classificazione binaria. Il valore predefinito è 0,5.

File di configurazione JSON di esempio per set di dati CSV e JSON Lines

Di seguito sono riportati alcuni esempi di file JSON utilizzati per configurare i set di dati CSV e JSON Lines, monitorarli e individuare eventuali deviazioni di bias.

Set di dati CSV

Consideriamo un set di dati con quattro colonne di funzionalità e una colonna di etichette, in cui la prima funzionalità e l'etichetta sono binarie, come nell'esempio seguente.

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

Supponiamo che l'output del modello abbia due colonne, dove la prima è l'etichetta prevista e la seconda è la probabilità, come nell'esempio seguente.

1, 0.5385257417814224

Quindi, il seguente file di configurazione JSON mostra un esempio di come questo set di dati CSV può essere configurato.

{ "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'etichetta prevista viene selezionata dal parametro "InferenceAttribute". Viene utilizzata la numerazione a base zero, perciò 0 indica la prima colonna dell'output del modello,

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

In alternativa, è possibile utilizzare diversi parametri per convertire i valori di probabilità in etichette binarie previste. Viene utilizzata la numerazione a base zero: 1 indica la seconda colonna; il valore ProbabilityThresholdAttribute di 0,6 indica che una probabilità maggiore di 0,6 prevede che l'etichetta binaria sia 1.

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

Set di dati JSON Lines

Consideriamo un set di dati con quattro colonne di funzionalità e una colonna di etichette, in cui la prima funzionalità e l'etichetta sono binarie, come nell'esempio seguente.

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

Supponiamo che l'output del modello abbia due colonne, dove la prima è un'etichetta prevista e la seconda è una probabilità.

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

Il seguente file di configurazione JSON mostra un esempio di come questo set di dati JSON Lines può essere configurato.

{ "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] }] }

Quindi, il valore del parametro "features" in EndpointInput (per gli endpoint in tempo reale) o BatchTransformInput (per i processi di trasformazione di batch) viene utilizzato per individuare le funzionalità nel set di dati e il valore del parametro "predicted_label" seleziona l'etichetta prevista dall'output del modello.

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

In alternativa, è possibile convertire i valori di probabilità in etichette binarie previste utilizzando il valore del parametro ProbabilityThresholdAttribute. Un valore pari a 0,6, ad esempio, indica che una probabilità maggiore di 0,6 prevede che l'etichetta binaria sia 1.

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