Counterfactual Logit Paring (CLP) がユースケースに適切な手法であると判断したら、次の手順を実行して適用できます。
- 元のデータと反事実データを使用して
CounterfactualPackedInputs
のインスタンスを作成します。 - フリップ率とフリップ数を測定して、介入が必要かどうかを判断します。
- 介入が必要な場合は、元の入力データ、反事実データ、元のモデル、反事実損失を反事実モデルに渡します。
- フリップ率とフリップ数を測定して、CLP の影響を評価します。
CLP を Keras モデルに適用する例については、 「Keras で反事実ロジット ペアリングを使用する」チュートリアルを参照してください。
CounterfactualPackedInputs
のインスタンスを作成する
反事実データセットを作成するには、まず、削除または置き換えられたときにモデルの予測が変更される可能性がある、評価したい用語と特徴を決定します。
評価する用語と機能を理解したら、元の入力と反事実データを含むCounterfactualPackedInputs
のインスタンスを作成する必要があります。元の入力は、Keras モデルのトレーニングに使用したデータセットである必要があります。 Counterfactual データには、 original_x
値、 counterfactual_x
値、およびcounterfactual_sample_weight
あります。反事実の値は元の値とほぼ同一である必要がありますが、1 つ以上の機密属性が削除または置換されている点が異なります。反事実データセットの品質は、機密属性が異なる場合にモデルの予測が変更されないことを保証する目的で、元の値と反事実値の間の損失関数をペアにするために使用されるため、重要です。
この反事実データセットの開発方法の詳細については、カスタム反事実データセットの作成に関するノートブックを参照してください。
フリップ数とフリップ率を測定する
フリップは、例で参照されている機密属性が変化したときに異なる決定を与える分類子として定義されます。これは、アイデンティティ属性の有無、または変更によって分類器が予測を変更する状況をキャプチャします。分類子の実際の値 (スコア) を評価する場合は、より連続的なメトリックを使用する必要があります。
フリップカウント
フリップ カウントは、特定の例の恒等項が変更された場合に、分類器が異なる決定を下した回数を測定します。
- 全体の反転数: 予測が正から負、またはその逆に反転した合計数。
- 正から負への予測反転数: 予測ラベルが正から負に変化した反転の数。
- Negative to Positive Prediction Flip Count : 予測ラベルが負から正に変化したフリップの数。
フリップレート
反転率は、特定の例の恒等項が変更された場合に、分類器が異なる決定を下す確率を測定します。
- 全体のフリップ率: サンプルの合計数に対する合計フリップ数
- 正から負への予測反転率: 反事実データセット内の正の例における正から負への反転数
- ネガティブからポジティブへの予測反転率: 反事実データセット内のネガティブな例におけるネガティブからポジティブへの反転数
Fairness Indicatorsを使用してフリップ率とフリップ数を計算した後、分類器がデータ内の機密属性に基づいて異なる予測を行っているかどうかを判断できます。例数と信頼区間を使用して、CLP を適用しフリップ率から結論を引き出すのに十分なデータがあるかどうかを判断できます。高いフリップ レートとフリップ カウントは、この動作が発生していることを示しており、CLP がユースケースに適切かどうかを判断するために使用できます。この決定はモデルに固有であり、エンド ユーザーに生じる可能性のある危害やモデルが使用されている製品などの要因によって異なります。
Keras モデルに反事実ロジット ペアリングを適用する
CLP を使用するには、修復しようとしている元の Keras モデル、元のトレーニング データセット、および反事実データセットが必要です。ロジットペアリングにどのようなcounterfactual loss
適用するかを決定します。これにより、元のモデルから目的の反事実損失関数と損失関数を備えた反事実モデルを構築できます。
CLP を適用した後、フリップ率とフリップ数、および全体の精度などの他の指標の変化を計算して、この手法の適用による改善を測定する必要があります。