特定の条件下では、モデルの配置に対して直接バイアスだけでなく間接バイアスも考慮するように公平性評価を設定できます。
間接バイアスは、データ・セット内の 1 つの機能を別の機能のために使用できる場合に発生します。 例えば、人種が既知のフィーチャーではないデータ・セットでは、郵便番号などのフィーチャーは、多くの場合、人種に近接して追跡することができます。 バイアスについて郵便番号機能を評価することは、間接バイアスを検出する 1 つの方法です。 別の例として、顧客の購買履歴が性別と密接に対応している場合があります。 したがって、人種、年齢、性別などの標準的な保護属性のいずれも含まれていない予測モデルであっても、偏りのある結果を示す可能性があります。
間接的バイアスは、以下の条件を満たす場合に分析される:
- 相関関係を見つけるには、データ・セットが十分に大きくなければなりません (4000 レコード以上)。
- 訓練データに、メタ・フィールドが含まれている必要があります。 データ・フィールドのサブセットでモデルを訓練する必要があります。 これらの追加フィールドであるメタ・フィールドは、間接バイアスを判別するためのものです。 (メタ・フィールドを含めますが、モデルのトレーニングには使用しません。)
- ペイロード・ロギングにメタ・フィールドを含め、公平性モニターを構成する前に実行する必要があります。 メタフィールドをアップロードするには、このメソッドを使用する必要があります。 間接バイアスのためのペイロード・ロギングには、1) 値を指定した訓練特徴量と 2) 値を指定したメタ・フィールドの 2 つのタイプの入力が必要です。
- 公平性モニターを構成する場合は、モニターする追加フィールドを選択します。
間接バイアスの標準的なワークフロー
ただし、モデルが異なる列を必要とする実動前モデルと実動モデルの間接的なバイアスを判別することができます。 実動前モデルの評価に使用されるテスト・データと、実動前モデルまたは実動モデルのいずれかの評価に使用されるフィードバック・データは、メタ列の使用方法が異なります。 メタ列は、実動前のテスト・データには必須ですが、実動前モデルまたは実動モデルに使用されるフィードバック・データに含めることはできません。 標準的なワークフローには、以下のステップが含まれます。
- 特徴量列とメタ列の両方が含まれる訓練データを作成します。 メタ列には、モデルの訓練に使用されないデータが含まれます。
- メタ・カラムでフェアネス・モニターを設定する。
- 実動前に、特徴量列とメタ列の両方を含むテスト・データをアップロードします。 このテスト・データは、 テスト・データのインポート CSV オプションを使用してアップロードする必要があります。
- 実動前に、間接的なバイアス測定を使用して最終的なモデルにバイアスがないことを確認しながら、さまざまなバージョンのモデルを相互作用することができます。
- モデルを実動環境に送信した後、フィードバック・データにはメタ列は含まれず、モデルの訓練に使用された特徴量列のみが含まれているはずです。
メタ・フィールドを持つサンプルの JSON ペイロード・ファイル
以下のサンプル・ファイルは、モデルの訓練に使用されるフィールドと値を含む JSON ペイロードを示しています。 間接バイアス分析に使用されるメタ・フィールドと値も含まれます。 メタ・フィールドはモデルの訓練に使用されるのではなく、モデル内のバイアスに相関させる別の種類の分析用に予約されています。 メタ・フィールドには任意のタイプのデータを指定できますが、通常は、性別、人種、年齢などの保護属性です。
[request_data = {
"fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K"],
"values": [[28, "F", "LOW", "HIGH", 0.61, 0.026]]
}
response_data = {
"fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K", "probability", "prediction", "DRUG"],
"values": [[28, "F", "LOW", "HIGH", 0.61, 0.026, [0.82, 0.07, 0.0, 0.05, 0.03], 0.0, "drugY"]]
}
request_data = <put your data here>
response_data = <put your data here>
records = [PayloadRecord(request=request_data, response=response_data, response_time=18),
PayloadRecord(request=request_data, response=response_data, response_time=12)]
subscription.payload_logging.store(records=records)
メタ値は、配列の配列の形式にする必要があります。
"meta": {
"fields": ["age", "race", "sex"],
"values": [
[32, "Black", "Male"]
]
}
詳細はこちら
- バイアス緩和のオプション
- 間接的なバイアスを検出するノートについては、間接的なバイアスの検出
親トピック: モデル評価の構成