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à.
Le spiegazioni sono in genere contrastive, ovvero tengono conto delle deviazioni da una linea di base. Per informazioni sulle linee di base di spiegabilità, consulta Linee di base SHAP per la spiegabilità.
Oltre a fornire spiegazioni per le inferenze per istanza, SageMaker Clarify supporta anche la spiegazione globale dei modelli ML che consente di comprendere il comportamento di un modello nel suo insieme in termini di funzionalità. SageMaker Clarify genera una spiegazione globale di un modello ML aggregando i valori Shapley su più istanze. SageMaker Clarify supporta i seguenti diversi metodi di aggregazione, che è possibile utilizzare per definire le linee di base:
-
mean_abs
: media dei valori SHAP assoluti per tutte le istanze. -
median
: mediana dei valori SHAP per tutte le istanze. -
mean_sq
: media dei valori quadratici SHAP per tutte le istanze.
Dopo aver configurato l'applicazione per acquisire dati di inferenza in tempo reale o con trasformazione di batch, la prima operazione da monitorare per rilevare eventuali deviazioni dell'attribuzione di funzionalità consiste nel creare una linea di base da comparare. Ciò comporta la configurazione degli input di dati, dei gruppi sensibili, del modo in cui vengono acquisite le previsioni e del modello e dei relativi parametri del bias post-addestramento. Quindi devi iniziare il processo di creazione della linea di base. Il monitoraggio della spiegabilità dei modelli può spiegare le previsioni di un modello implementato che produce inferenze e rilevare regolarmente deviazioni nell'attribuzione delle funzionalità.
model_explainability_monitor = ModelExplainabilityMonitor( role=role, sagemaker_session=sagemaker_session, max_runtime_in_seconds=1800, )
In questo esempio, il processo di creazione di una linea di base di spiegabilità condivide il set di dati per la verifica con il processo di creazione di una linea di base per il bias, quindi utilizza lo stesso DataConfig
e l'unica differenza è l'URI di output del processo.
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,
)
Attualmente il programma esplicativo di SageMaker Clarify offre un'implementazione scalabile ed efficiente di SHAP, pertanto la configurazione di spiegabilità è la seguente: SHAPConfig
-
baseline
: un elenco di righe (almeno una) o URI di oggetti S3 da utilizzare come set di dati di base nell'algoritmo del kernel SHAP. Il formato deve essere uguale a quello del set di dati. Ogni riga deve contenere solo la funzionalità. columns/values and omit the label column/values -
num_samples
: numero di campioni da utilizzare nell'algoritmo del kernel SHAP. Questo numero determina la dimensione del set di dati sintetico generato per calcolare i valori SHAP. -
agg_method: metodo di aggregazione per valori SHAP globali. I seguenti valori sono validi:
-
mean_abs
: media dei valori SHAP assoluti per tutte le istanze. -
median
: mediana dei valori SHAP per tutte le istanze. -
mean_sq
: media dei valori quadratici SHAP per tutte le istanze.
-
-
use_logit
: indicatore che mostra se la funzione logit deve essere applicata alle previsioni del modello. Il valore predefinito èFalse
. Seuse_logit
èTrue
, i valori SHAP avranno unità log-odds. -
save_local_shap_values
(bool): indicatore che mostra se salvare i valori SHAP locali nella posizione di output. Il valore predefinito è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,
)
Inizia un processo di creazione di una linea di base. Lo stesso model_config
è necessario perché il processo di creazione di una linea di base di spiegabilità deve creare un endpoint ombra per ottenere previsioni per il set di dati sintetico generato.
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}")