Configuración de parámetros para supervisar la desviación de sesgo - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de parámetros para supervisar la desviación de sesgo

La monitorización SageMaker de sesgos de Amazon Clarify reutiliza un subconjunto de los parámetros utilizados en la configuración de análisis de. Configuración del análisis Tras describir los parámetros de configuración, en este tema se proporcionan ejemplos de archivos JSON. Estos archivos se utilizan para configurar conjuntos de datos de CSV y JSON Lines con el fin de supervisarlo para detectar desviaciones de sesgo cuando los modelos de machine learning están en producción.

Los siguientes parámetros deben proporcionarse en un archivo JSON. La ruta a este archivo JSON debe proporcionarse en el parámetro ConfigUri de la API ModelBiasAppSpecification.

  • "version": versión esquemática (opcional) del archivo de configuración. Si no se proporciona, se utiliza la versión más reciente compatible.

  • "headers": una lista de nombres de columnas del conjunto de datos (opcional). Si dataset_type es "application/jsonlines" y se especifica "label", el último encabezado pasa a ser el encabezado de la columna de etiquetas.

  • "label": atributo objetivo del modelo que se utilizará para las métricas de sesgo (opcional). Se especifica como nombre de columna o índice (si el formato del conjunto de datos es CSV) o como JMESPath (si el formato del conjunto de datos es JSON Lines).

  • "label_values_or_threshold": lista de valores o umbrales de etiquetas (opcional). Indica un resultado positivo utilizado para las métricas de sesgo.

  • "facet": una lista de características que son atributos sensibles, que se denominan facetas (opcional). Las métricas de sesgo utilizan las facetas en forma de pares e incluyen lo siguiente:

    • "name_or_index": nombre o índice de la columna de facetas.

    • "value_or_threshold": lista de valores o umbrales que puede adoptar la columna de facetas (opcional). Indica el grupo sensible, como el grupo que se utiliza para medir el sesgo. Si no se proporcionan, las métricas de sesgo se calculan como un grupo para cada valor único (en lugar de todos los valores). Si la columna de facetas es numérica, este valor umbral se aplica como límite inferior para seleccionar el grupo sensible.

  • "group_variable": (opcional) un nombre de columna o un índice para indicar la variable de grupo que se utilizará para la métrica de sesgo disparidad demográfica condicional.

Los demás parámetros deben proporcionarse en EndpointInput (para los puntos de conexión en tiempo real) o BatchTransformInput (para los trabajos de transformación por lotes) de la API ModelBiasJobInput.

  • FeaturesAttribute: este parámetro es obligatorio si el formato de los datos de entrada del punto de conexión es "application/jsonlines". Es el JMESPath que se utiliza para localizar las columnas de características si el formato del conjunto de datos es JSON Lines.

  • InferenceAttribute: ubicación del índice o JMESPath en la salida del modelo del atributo objetivo que se va a utilizar para supervisar el sesgo mediante métricas de sesgo. Si no se proporciona en el caso de CSV accept_type, se supone que el resultado del modelo es un único valor numérico correspondiente a una puntuación o probabilidad.

  • ProbabilityAttribute: ubicación del índice o JMESPath en la salida del modelo para las probabilidades. Si la salida del modelo son JSON Lines con una lista de etiquetas y probabilidades, por ejemplo, se selecciona la etiqueta que corresponde a la probabilidad máxima para los cálculos de sesgo.

  • ProbabilityThresholdAttribute: (opcional) un valor flotante para indicar el umbral para seleccionar la etiqueta binaria, en el caso de la clasificación binaria. El valor predeterminado es 0,5.

Ejemplo de archivos de configuración JSON para conjuntos de datos de CSV y JSON Lines

A continuación, se muestran ejemplos de los archivos JSON que se utilizan para configurar el conjuntos de datos de CSV y JSON Lines con el fin de supervisar la desviación de sesgo.

Conjuntos de datos CSV

Considere un conjunto de datos que tiene cuatro columnas de características y una columna de etiquetas, donde la primera característica y etiqueta son binarias, como en el siguiente ejemplo.

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

Suponga que la salida del modelo tiene dos columnas, donde la primera es la etiqueta predicha y la segunda es la probabilidad, como en el siguiente ejemplo.

1, 0.5385257417814224

A continuación, el siguiente archivo de configuración JSON muestra un ejemplo de cómo se puede configurar este conjunto de datos CSV.

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

La etiqueta predicha se selecciona mediante el parámetro "InferenceAttribute". Se utiliza una numeración basada en cero, por lo que 0 indica la primera columna de la salida del modelo.

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

Como alternativa, puede usar diferentes parámetros para convertir los valores de probabilidad en etiquetas predichas binarias. Se utiliza una numeración basada en cero: 1 indica la segunda columna; el valor de ProbabilityThresholdAttribute de 0,6 indica que una probabilidad superior a 0,6 predice la etiqueta binaria como 1.

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

Conjuntos de datos JSON Lines

Considere un conjunto de datos que tiene cuatro columnas de características y una columna de etiquetas, donde la primera característica y etiqueta son binarias, como en el siguiente ejemplo.

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

Suponga que la salida del modelo tiene dos columnas, donde la primera es la etiqueta predicha y la segunda es una probabilidad.

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

El siguiente archivo de configuración JSON muestra un ejemplo de cómo se puede configurar este conjunto de datos JSON Lines.

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

A continuación, el valor del parámetro "features" en EndpointInput (para los puntos de conexión en tiempo real) o BatchTransformInput (para los trabajos de transformación por lotes) se utiliza para localizar las características en el conjunto de datos, y el valor del parámetro "predicted_label" selecciona la etiqueta predicha de la salida del modelo.

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

Como alternativa, puede convertir los valores de probabilidad en etiquetas binarias predichas utilizando el valor del parámetro ProbabilityThresholdAttribute. Un valor de 0,6, por ejemplo, indica que una probabilidad superior a 0,6 predice la etiqueta binaria como 1.

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