Configurar parâmetros para monitorar o desvio de polarização - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar parâmetros para monitorar o desvio de polarização

O monitoramento de viés do Amazon SageMaker Clarify reutiliza um subconjunto dos parâmetros usados na configuração de análise do. Configurar a análise Depois de descrever os parâmetros de configuração, este tópico fornece exemplos de arquivos JSON. Esses arquivos são usados para configurar conjuntos de dados de linhas CSV e JSON para monitorá-los quanto a desvios de polarização quando os modelos de machine learning estão em produção.

Os parâmetros a seguir devem ser fornecidos em um arquivo JSON. O caminho para esse arquivo JSON deve ser fornecido no parâmetro ConfigUri da API ModelBiasAppSpecification.

  • "version" – (Opcional) Versão do esquema do arquivo de configuração. Se não for fornecida, a versão compatível mais recente será usada.

  • "headers" – (Opcional) Uma lista de nomes de colunas no conjunto de dados. Se o dataset_type for "application/jsonlines" e "label" for especificado, o último cabeçalho se tornará o cabeçalho da coluna do rótulo.

  • "label" – (Opcional) Atributo destino para o modelo a ser usado para métricas de desvio. Especificado como nome de coluna ou índice (se o formato do conjunto de dados for CSV) ou como JMESPath (se o formato do conjunto de dados for Linhas JSON).

  • "label_values_or_threshold" – (Opcional) Lista de limites ou valores do rótulo. Indica o resultado positivo usado para métricas de desvio.

  • "facet" – (Opcional) Uma lista de recursos que são atributos confidenciais, chamados de facetas. As facetas são usadas para métricas de desvio na forma de pares e incluem o seguinte:

    • "name_or_index" – Nome ou índice da coluna de faceta.

    • "value_or_threshold" – (Opcional) Lista de valores ou limites que a coluna de faceta pode assumir. Indica o grupo confidencial, como o grupo usado para medir o desvio. Se não forem fornecidas, as métricas de desvio serão calculadas como um grupo para cada valor exclusivo (em vez de todos os valores). Se a coluna da faceta for numérica, esse valor limite será aplicado como limite inferior para selecionar o grupo confidencial.

  • "group_variable" – (Opcional) Um nome de coluna ou índice para indicar a variável de grupo a ser usada para a métrica de desvio de Disparidade demográfica condicional.

Os outros parâmetros devem ser fornecidos em EndpointInput (para endpoints em tempo real) ou BatchTransformInput (para trabalhos de transformação de lotes) da API de ModelBiasJobInput.

  • FeaturesAttribute – Esse parâmetro é obrigatório se o formato de dados de entrada do endpoint for "application/jsonlines". É o JMESPath usado para localizar as colunas de recursos se o formato do conjunto de dados for linhas JSON.

  • InferenceAttribute – Índice ou localização do JMESPath na saída do modelo para o atributo de destino a ser usado para monitorar o desvio usando métricas de desvio. Se não for fornecido no caso CSV accept_type, presume-se que a saída do modelo seja um único valor numérico correspondente a uma pontuação ou probabilidade.

  • ProbabilityAttribute – Índice ou localização do JMESPath na saída do modelo para probabilidades. Se a saída do modelo for linhas JSON com uma lista de rótulos e probabilidades, por exemplo, o rótulo que corresponde à probabilidade máxima será selecionado para cálculos de desvio.

  • ProbabilityThresholdAttribute – (Opcional) Um valor flutuante para indicar o limite para selecionar o rótulo binário, no caso de classificação binária. O valor padrão é 0,5.

Exemplos de arquivos de configuração JSON para conjuntos de dados CSV e linhas JSON

Veja alguns exemplos dos arquivos JSON usados para configurar conjuntos de dados CSV e linhas JSON para monitorá-los quanto ao desvio de polarização.

Conjuntos de dados de CSV

Considere um conjunto de dados que tenha quatro colunas de recursos e uma coluna de rótulo, em que o primeiro recurso e o rótulo sejam binários, como no exemplo a seguir.

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

Suponha que a saída do modelo tenha duas colunas, onde a primeira é o rótulo previsto e a segunda é a probabilidade, como no exemplo a seguir.

1, 0.5385257417814224

Em seguida, o arquivo de configuração JSON a seguir mostra um exemplo de como esse conjunto de dados CSV pode ser configurado.

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

O rótulo previsto é selecionado pelo parâmetro "InferenceAttribute". A numeração baseada em zero é usada, então 0 indica a primeira coluna da saída do modelo.

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

Como alternativa, você pode usar parâmetros diferentes para converter valores de probabilidade em rótulos de previsão binários. A numeração baseada em zero é usada: 1 indica a segunda coluna; o valor de ProbabilityThresholdAttribute de 0,6 indica que uma probabilidade maior que 0,6 prevê o rótulo binário como 1.

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

Conjuntos de dados de linhas JSON

Considere um conjunto de dados que tenha quatro colunas de recursos e uma coluna de rótulo, em que o primeiro recurso e o rótulo sejam binários, como no exemplo a seguir.

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

Suponha que a saída do modelo tenha duas colunas, onde a primeira é o rótulo previsto e a segunda é a probabilidade.

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

Em seguida, o arquivo de configuração JSON a seguir mostra um exemplo de como esse conjunto de dados de linhas JSON pode ser configurado.

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

Em seguida, o valor do parâmetro "features" em EndpointInput (para endpoints em tempo real) ou BatchTransformInput (para trabalhos de transformação de lotes) é usado para localizar os recursos no conjunto de dados, e o valor do parâmetro "predicted_label" seleciona o rótulo previsto na saída do modelo.

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

Como alternativa, você pode converter valores de probabilidade em rótulos de previsão binários usando o valor de parâmetro ProbabilityThresholdAttribute. Um valor de 0,6, por exemplo, indica que uma probabilidade maior que 0,6 prediz o rótulo binário como 1.

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