バイアスドリフトをモニタリングするパラメータを設定する - Amazon SageMaker

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

バイアスドリフトをモニタリングするパラメータを設定する

Amazon SageMaker Clarify バイアスモニタリングは、 の分析設定で使用されるパラメータのサブセットを再利用します分析を設定する。このトピックでは、設定パラメータについて説明したあと、JSON ファイルの例を紹介します。これらのファイルを使用して CSV および JSON Lines データセットを設定し、機械学習モデルが本番稼働しているときにバイアスドリフトがないかモニタリングします。

以下のパラメータは JSON ファイルで提供する必要があります。この JSON ファイルへのパスは、ModelBiasAppSpecification API の ConfigUri パラメータで指定する必要があります。

  • "version" - (オプション) 設定ファイルのスキーマバージョン。指定しない場合、サポートされている最新のバージョンが使用されます。

  • "headers" - (オプション) データセット内の列名のリスト。dataset_type"application/jsonlines" で、"label" が指定されている場合、最後のヘッダーはラベル列のヘッダーになります。

  • "label" — (オプション) バイアスメトリクスに使用するモデルのターゲット属性。列名、またはデータセット形式が CSV の場合はインデックスとして、データセット形式が JSON Lines の場合は JMESPath として指定します。

  • "label_values_or_threshold" — (オプション) ラベル値またはしきい値のリスト。バイアスメトリクスに使用した肯定的な結果を示します。

  • "facet" — (オプション) ファセットと呼ばれる機密属性である機能のリスト。ファセットはペアの形式でバイアスメトリクスに使用され、次のものが含まれます。

    • "name_or_index" - ファセットの列名またはインデックス。

    • "value_or_threshold" — (オプション) ファセット列に入力できる値またはしきい値のリスト。バイアスの測定に使用されるグループなど、機密性の高いグループを示します。指定しない場合、バイアスメトリクスは (すべての値ではなく) 一意の値ごとに 1 つのグループとして計算されます。ファセット列が数値の場合、このしきい値は、機密性の高いグループを選択するための下限として適用されます。

  • "group_variable" — (オプション) 条件付き人口格差のバイアスメトリクスに使用されるグループ変数を示す列名またはインデックス。

他のパラメーターは、 ModelBiasJobInput API の EndpointInput (リアルタイムエンドポイントの場合) または BatchTransformInput (バッチ変換ジョブの場合) で指定する必要があります。

  • FeaturesAttribute — エンドポイントの入力データ形式が "application/jsonlines" の場合、このパラメータは必須です。データセット形式が JSON Lines の場合、これは特徴量列の検索に使用される JMESPath です。

  • InferenceAttribute — バイアスメトリクスを使用してバイアスをモニタリングするために使用されるターゲット属性のモデル出力内のインデックスまたは JMESPath の場所。CSV accept_type ケースでこれが指定されていない場合、モデル出力がスコアまたは確率に対応する単一の数値であると仮定します。

  • ProbabilityAttribute — 確率を示すモデル出力内のインデックスまたは JMESPath の場所。例えば、モデル出力がラベルと確率のリストを含む JSON Lines の場合、最大確率に対応するラベルがバイアス計算用に選択されます。

  • ProbabilityThresholdAttribute - (オプション) 二項分類の場合にバイナリラベルを選択するためのしきい値を示す浮動小数点値。デフォルト値は 0.5 です。

CSV および JSON Lines データセットの JSON 設定ファイルの例

CSV および JSON Lines データセットを設定してバイアスドリフトをモニタリングするために使用される JSON ファイルの例を次に示します。

CSV データセット

次の例のように、4 つの特徴量列と 1 つのラベル列からなるデータセットを考えてみると、最初の特徴量とラベルはバイナリです。

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

次の例のように、モデル出力に 2 つの列があり、最初の列が予測ラベル、2 番目の列が確率であると仮定します。

1, 0.5385257417814224

次に、次の JSON 設定ファイルはこの 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] }] }

予測ラベルは "InferenceAttribute" パラメータによって選択されます。0 から始まる番号が使用されるため、0 はモデル出力の最初の列を示します。

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

別の方法として、さまざまなパラメータを使用して確率値をバイナリ予測ラベルに変換することもできます。0 から始まる番号付けが使用されます。1 は 2 列目を示し、0.6 という ProbabilityThresholdAttribute 値は、確率が 0.6 を超えるとバイナリラベルが 1 と予測されることを示します。

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

JSON Lines データセット

次の例のように、4 つの特徴量列と 1 つのラベル列からなるデータセットを考えてみると、最初の特徴量とラベルはバイナリです。

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

モデル出力に 2 つの列があり、最初の列が予測ラベル、2 番目の列が確率であると仮定します。

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

次の JSON 設定ファイルはこの 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] }] }

次に、EndpointInput (リアルタイムエンドポイントの場合) または BatchTransformInput (バッチ変換ジョブの場合) "features" のパラメータ値を使用してデータセット内の特徴量を検索し、"predicted_label" パラメータ値によってモデル出力から予測ラベルを選択します。

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

別の方法として、ProbabilityThresholdAttribute パラメータ値を使用して確率値をバイナリ予測ラベルに変換することもできます。例えば、値が 0.6 の場合、確率が 0.6 を超えると、バイナリラベルは 1 と予測されます。

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