Crie uma linha de SHAP base para modelos em produçã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á.

Crie uma linha de SHAP base para modelos em produção

As explicações são tipicamente contrastivas, ou seja, elas explicam os desvios de uma linha de base. Para obter informações sobre linhas de base de explicabilidade, consulte SHAPLinhas de base para explicabilidade.

Além de fornecer explicações para inferências por instância, o SageMaker Clarify também oferece suporte à explicação global para modelos de ML que ajudam você a entender o comportamento de um modelo como um todo em termos de seus recursos. SageMaker O Clarify gera uma explicação global de um modelo de ML agregando os valores de Shapley em várias instâncias. SageMaker O Clarify oferece suporte às seguintes formas diferentes de agregação, que você pode usar para definir linhas de base:

  • mean_abs— Média dos SHAP valores absolutos para todas as instâncias.

  • median— Mediana dos SHAP valores para todas as instâncias.

  • mean_sq— Média dos SHAP valores quadrados para todas as instâncias.

Depois de configurar seu aplicativo para capturar dados de inferência em tempo real ou de transformação de lotes, a primeira tarefa para monitorar o desvio da atribuição de recursos é criar uma linha de base para comparação. Isso envolve configurar as entradas de dados, quais grupos são confidenciais, como as previsões são capturadas e o modelo e suas métricas de desvio pós-treinamento. Em seguida, você precisa iniciar o trabalho de linha de base. O monitor de explicabilidade do modelo pode explicar as previsões de um modelo implantado que está produzindo inferências e detectar desvios na atribuição de recursos regularmente.

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

Neste exemplo, o trabalho de linha de base de explicabilidade compartilha o conjunto de dados de teste com o trabalho de linha de base de viés, então ele usa o mesmoDataConfig, e a única diferença é a saída do trabalho. URI

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

Atualmente, o SageMaker explicador do Clarify oferece uma implementação escalável e eficiente deSHAP, portanto, a configuração de explicabilidade inclui o seguinte: SHAPConfig

  • baseline— Uma lista de linhas (pelo menos uma) ou objeto S3 URI a ser usado como conjunto de dados de linha de base no algoritmo Kernel. SHAP O formato deve ser igual ao formato do conjunto de dados. Cada linha deve conter somente as colunas/valores do recurso e omitir a coluna/valores do rótulo.

  • num_samples— Número de amostras a serem usadas no SHAP algoritmo Kernel. Esse número determina o tamanho do conjunto de dados sintético gerado para calcular os SHAP valores.

  • agg_method — Método de agregação para valores globais. SHAP Estes são valores válidos:

    • mean_abs— Média dos SHAP valores absolutos para todas as instâncias.

    • median— Mediana dos SHAP valores para todas as instâncias.

    • mean_sq— Média dos SHAP valores quadrados para todas as instâncias.

  • use_logit – Indicador de se a função logit deve ser aplicada às previsões do modelo. O padrão é False. Se use_logit for o casoTrue, os SHAP valores terão unidades logarítmicas.

  • save_local_shap_values(bool) — Indicador de se SHAP os valores locais devem ser salvos no local de saída. O padrão é 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, )

Inicie um trabalho de linha de base. A mesma model_config é necessária porque o trabalho de definição de base de explicabilidade precisa criar um endpoint de sombra para obter previsões para o conjunto de dados sintéticos gerado.

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