本稼働環境のモデルの SHAP ベースラインを作成する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

本稼働環境のモデルの SHAP ベースラインを作成する

説明とは一般的に対比的なもので、この場合はベースラインからの逸脱について説明します。説明可能性ベースラインの詳細については、「説明可能性のための SHAP ベースライン」を参照してください。

SageMaker Clarify は、インスタンスごとの推論の説明を提供するだけでなく、ML モデルのグローバルな説明もサポートしています。これにより、モデル全体の動作をその機能の観点から理解するのに役立ちます。 SageMaker Clarify は、複数のインスタンスにわたる Shapley 値を集計して ML モデルのグローバルな説明を生成します。 SageMaker Clarify は以下の異なる集計方法をサポートしており、それらを使用してベースラインを定義できます。

  • mean_abs - すべてのインスタンスの SHAP 絶対値の平均値。

  • median - すべてのインスタンスの SHAP 値の中央値。

  • mean_sq - すべてのインスタンスの SHAP 値の二乗平均値。

アプリケーションのリアルタイム推論データまたはバッチ変換推論データのキャプチャを設定した後、特徴量属性ドリフトのモニタリングで最初に行うタスクは、比較対象となるベースラインの作成です。これには、データ入力、機微性の高いグループ、予測のキャプチャ方法、モデルとそのトレーニング後のバイアスメトリクスの設定が含まれます。その後に、ベースライン作成ジョブを開始する必要があります。モデルの説明可能性モニタリングは、推論を生成するデプロイ済みのモデルの予測を説明し、特徴属性ドリフトを定期的に検出します。

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

この例では、説明可能性ベースライン作成ジョブはバイアスベースライン作成ジョブとテストデータセットを共有するため、同じ DataConfig を使用します。唯一の違いはジョブの出力 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, )

現在、 SageMaker Clarify の説明ではスケーラブルで効率的な SHAP の実装が提供されているため、説明可能な設定は SHAPConfig です。これには以下が含まれます。

  • baseline - カーネル SHAP アルゴリズムでベースラインデータセットとして使用される行のリスト (少なくとも 1 つ) または S3 オブジェクト URI。形式は、データセット形式と同じである必要があります。各行には、特徴の列/値のみを含め、ラベルの列/値を省略する必要があります。

  • num_samples - カーネル SHAP アルゴリズムで使用されるサンプルの数。この数値は、SHAP 値を計算するために生成される合成データセットのサイズを決定します。

  • agg_method - グローバル SHAP 値の集計方法。以下の値が有効です。

    • mean_abs - すべてのインスタンスの SHAP 絶対値の平均値。

    • median - すべてのインスタンスの SHAP 値の中央値。

    • mean_sq - すべてのインスタンスの SHAP 値の二乗平均値。

  • use_logit — モデル予測にロジット関数を適用するかどうかを示す。デフォルトは False です。use_logitTrue の場合、SHAP の値は対数オッズ単位になります。

  • save_local_shap_values (ブール値) — ローカルの SHAP 値を出力場所に保存するかどうかを示す。デフォルトは 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, )

ベースライン作成ジョブを開始します。説明可能性ベースライン作成ジョブには、同じ model_config が必要です。このジョブは生成された合成データセットの予測を取得するためにシャドウエンドポイントを作成する必要があるためです。

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