Tecnos Data Science Engineering

TECH BLOG技術ブログ

[入門]公平性(Fairness)とは(3/3)

前回は公平性の規準をいくつか定式化し、不公平性の緩和アルゴリズムを紹介しました。
第3部では、公平性のためのいくつかのツールを紹介した後、Fairlearnを用いて不公平性の緩和アルゴリズムの1つである閾値最適化アルゴリズムを実装していきます。その中で、モデル間の予測精度と公平性のトレードオフや各モデルの精度指標および公平性指標の可視化についても扱っていきます。

公平性のためのツール

公平性のためのいくつかのツールを紹介した後に、公平性ツールの1つであるFairlearnを詳解します。6章では、Fairlearnを用いて4章の最後に登場した閾値最適化(ThresholdOptimizer)の実装を行います。
公平性のためのツールで代表的なものは下記の表のとおりです。

提供元 ツール名 説明
Microsoft Fairlearn モデルの予測結果に対する精度や公平性の指標およびそれらのトレードオフを可視化するダッシュボードと緩和アルゴリズムが備えられています。
2020年6月にMicrosoftのAzure Machine Learningに統合されました。
IBM AI Fairness 360 バイアスの検出や軽減をするためのツールキットで、75以上の公平性指標と10以上の緩和アルゴリズムがあります。
Google What-if tool プログラムをすることなく機械学習モデルのバイアスなどを検知できるツールです。
Fairness indicator 分類モデルの公平性指標の計算と視覚化ができます。また、What-If toolと統合がされています。
ML-fairness-gym 既存の静的なデータに対する不公平性への対処では対応できないようなフィードバックループに基づく動的なデータの長期的な影響をシミュレーションするためのツールです。

■Fairlearn

Fairlearnは、機械学習を用いたAIシステムの公平性を評価し、観測された不公平性を緩和するアルゴリズムを含んだPythonパッケージです。機械学習モデルの公平性を評価するためのJupyter widgetとしてFairlearn Dashboardが備わっており、複数のモデル間での公平性と精度のトレードオフや各モデルに対する全体のメトリクスやグループ間のメトリクスの差などを可視化することができます。また、不公平性の緩和アルゴリズムとしては、後処理型のアルゴリズムであるThresholdOptimizerや還元型アルゴリズムであるGridSearchとExponentiatedGradientが備わっています。
2章では不公平の原因はバイアスであると述べたが、Fairlearnではバイアスの原因を特定、除去することで不公平性を取り除くアプローチを取らず、損害の観点からAIシステムの不公平な振舞いを捉えます。したがって、本章ではバイアスという用語は登場しません。損害には多くの種類が存在するが、Fairlearnではグループの公平性に基づいた2種類の損害を取り扱います。

損害の種類 説明
配分の損害 特定のグループに対して、機会やリソースが与えられない、または情報へのアクセスが拒否されること。
例)雇用、入学、融資
サービスの品質の損害 特定のグループは、機会やリソース、情報へのアクセス権を有するが、それらが低品質であること。
例)顔認識アプリケーション、ECサイトでのレコメンド

このような損害を与えるサービスを提供することは法律で禁じられている可能性があります。また、法律に違反していなくとも損害の事実が明るみになれば顧客を失う可能性が有り得ます。持続的なAIサービスの提供をするためには損害に対する配慮が必要であると言えます。
3章で扱ったグループの公平性について、損害の観点から見直してみましょう。

公平性規準 緩和できる損害
デモグラフィックパリティ 配分の損害
等価オッズ 配分の損害、サービスの品質の損害
機会均等 配分の損害、サービスの品質の損害

デモグラフィックパリティはセンシティブ属性に依らず予測結果を等しくする規準であるため、配分の損害を緩和します。しかし、配分を等しくすることは逆差別を引き起こす可能性があり、サービスの品質が必ずしも担保されるとは限りません。等価オッズはグループ間での誤検知率や見逃し率を等しくする規準であるため、サービスの品質の低下を抑える規準と言えます。機会均等については、3章で扱ったローンの例を思い出すと、債務不履行を起こさない顧客に対してはサービスの品質が保たれています。
Fairlearnでは、公平性の評価および不公平性の緩和のいずれの文脈においても格差メトリクス(disparity metrics)に基づいて設計されています。格差メトリクスとは、機械学習モデルの予測結果が対象の公平性規準を満たしている状態からどれほど乖離しているかを表す指標です。格差メトリクスは異なるグループ間を比較するために、差の観点あるいは比の観点を用いて定義されます。デモグラフィックパリティを例に考えてみましょう。ここでは簡単のため、$P(\hat{ Y }=1|A=1) \geq P(\hat{ Y }=1|A=0)$とします。このとき、デモグラフィックパリティに関する格差メトリクスは以下で与えられます。

格差メトリクス 定義
デモグラフィックパリティ差 $P(\hat{ Y }=1|A=1) – P(\hat{ Y }=1|A=0)$
デモグラフィックパリティ比 $\begin{eqnarray}
\frac{ P(\hat{ Y }=1|A=0) }{ P(\hat{ Y }=1|A=1) }
\end{eqnarray}$

デモグラフィックパリティ差が0に近ければ近いほど、あるいはデモグラフィックパリティ比が1に近ければ近いほど公平性が満たされていると言えます。

Fairlearnを用いた閾値最適化の実装

本章では、FairlearnのGitHubにあるノートブック「Binary Classification with the UCI Credit-card Default Dataset」に基づいて4章の最後で取り上げた閾値最適化(ThresholdOptimizer)の実装を行います。この中でFairlearn Dashboardによるメトリクスの可視化も扱います。
Fairlearnは以下のpipコマンドでPyPIからインストールできます:
pip install fairlearn
あるいは、conda-forgeでもインストールできます:
conda install -c conda-forge fairlearn

[本実装の扱うこと]

■Fairlearn Dashboardを用いた機械学習モデルの公平性の評価
■ThresholdOptimizerを用いた不公平性の緩和

[本実装の概要]

■UCIクレジットカード・デフォルト・データセットを用いた2値分類問題を扱います。
■融資をするかの意思決定を公平に行うアルゴリズムを作成します。
■特定のデータに疑似的な不公平性(予測に対する男女間での精度格差)を加えます。
■格差メトリクスである等価オッズ差を用いてグループ間の精度格差を緩和します。

[データ概要]

データの取得元
■2005年に台湾の銀行で取得された3万人の顧客のクレジットカードの取引データ
■説明変数には、顧客の静的な特徴量と2005年4~9月までのクレジットカードの請求書の支払い履歴と顧客のクレジットカードの残高限度額が含まれています。
■目的変数は、2005年10月にカードの支払いを滞納するか否かであり、滞納した場合は1、そうでなければ0が付きます。

[カラムの説明]
カラム名 説明
[説明変数]
LIMIT_BAL 利用可能枠(不公平性のための加工対象カラム)
SEX 性別 (1=male,2=female)
EDUCATION 最終学歴 (1=graduate school,2=university,3=high school,4=others)
MARRIAGE 既婚/未婚/その他 (1=married,2=single,3=others)
AGE 年齢
PAY_[1-6] 支払歴(PAY_1:支払歴(2005年9月),PAY_2:支払歴(2005年8月),…,PAY_6:支払歴(2005年4月))
[カテゴリ値の対応表]

カテゴリ値 定義
-2 請求なし
-1 遅延なく支払
0 リボルビング払い
1 1ヶ月延滞
8 8ヶ月延滞
9 9ヶ月延滞
BILL_AMT[1-6] 請求額 (BILL_AMT1:請求額(2005年9月),BILL_AMT2:請求額(2005年8月),…,BILL_AMT6:請求額(2005年4月))
PAY_AMT[1-6] 支払額 (PAY_AMT1:支払額(2005年9月),PAY_AMT2:支払額(2005年8月),…,PAY_AMT6:支払額(2005年4月))
[目的変数]
default payment next month 2005年10月にカードの支払いを滞納するか否か(Yes=1,No=0)
[精度指標]

■AUC
■Balanced accuracy

[格差メトリクス]

■等価オッズ差

[緩和アルゴリズム]

■fairlearn.postprocessing.ThresholdOptimizer

実装のために必要なモジュールをあらかじめインポートしましょう。

UCIクレジットカード・デフォルト・データセットを取得します。

センシティブ属性と目的変数を定義し、カテゴリ変数として扱うものをキャストします。

LIMIT_BAL変数を、女性に対しては目的変数と相関し、男性に対しては相関しないように加工します。これにより機械学習モデルを作成した際に性別による精度格差が生じるため不公平性を持つ疑似的なデータができます。

加工済みのLIMIT_BAL変数に対して男女ごとにヒストグラムを描画してみましょう。

上図から、加工済みのLIMIT_BAL変数は、女性に対しては債務不履行者か否かをある程度分離することができそうだが、男性に対してそれは期待できないことが分かります。このことは、公平性を考慮せずに機械学習モデルを作成した際にも予測結果に反映されるはずです。したがって、このモデルは不公平なモデルと言えます。
不公平性を考慮しないモデルを作成するために元のデータを学習用データとテスト用データに分けましょう。

公平性を考慮せずに標準的な分類器を作成しましょう。アルゴリズムはLightGBMを使用します。

作成した分類器の精度を確認してみましょう。

この分類器の重要度を棒グラフで出力してみましょう。

上図見ると、公平性を考慮していないモデルでは、加工した変数であるLIMIT_BALが最も重要な変数であることが分かります。しかし、これは女性に対しては効果的な変数であるが、男性に対しては予測の役に立たないように加工したのでした。
ここで、機械学習モデルに対していくつかの精度指標と公平性指標を確認することができる補助関数を定義しておきましょう。

この関数は、モデル名とテスト用データに対する予測ラベルおよび予測スコアを辞書型で渡すことで、複数のモデルの精度指標と公平性指標を出力することができます。先ほどの公平性を考慮しないモデルに対して補助関数を適用するために、この分類器の予測ラベルを、予測スコアが学習用データの目的変数の平均値以上になる場合を1、そうでない場合は0と定義しましょう。

実際に補助関数を適用して精度指標と公平性指標の値を確認してみましょう。

上表のOverall AUCを見ると、ある程度の精度があることが分かる。しかし、格差メトリクスであるEqualized odds differenceを見ると男女間では公平性のギャップが大きいことが分かります。我々の目的はThresholdOptimizerを用いて男女間の不公平性を緩和することでした。

■Fairlearn Dashboardを用いた機械学習モデルの公平性の評価

ThresholdOptimizerを実装する前にLightGBMモデルの予測結果についてFairlearn Dashboardで確認してみましょう。

Get startedを選択します。

Fairlearn Dashboardに渡しているセンシティブ属性は性別のみなので、そのままNextを選択します。

精度指標はAUCが未対応なので、Balanced accuracyを選び、Nextを選択します。Balanced accuracyとは、正例を正しく正例と予測した割合と負例を正しく負例と予測した割合の平均値を表します。
Fairlearn Dashboardでは、2つの観点でセンシティブ属性間の予測結果を比較することができます。上段がDisparity in performanceで下段がDisparity in predictionsです。

Disparity in performanceでは、先ほど選択した精度指標(Balanced accuracy)に基づく全体の精度とセンシティブ属性間での精度差および各属性の誤差分布を棒グラフの形で確認することができます。オレンジのバーは偽陰性率、青色のバーは偽陽性率を表します。上図を見ると男女間で精度差が18%程度あり、特に偽陰性率に差があるようです。

Disparity in predictionsでは、予測ラベルの正例率を全体と属性間で比較することができます。上図を見ると男女間で予測ラベルの正例率には5%ほど差があるようです。

■ThresholdOptimizerを用いた不公平性の緩和

公平性を考慮せずに作成したLightGBMモデルは男女間で不公平な予測結果を導くことが分かりました。ここでは、Fairlearnが備える緩和アルゴリズムであるThresholdOptimaizerを用いて男女間での格差緩和を試みましょう。格差メトリクスとしては等価オッズ差を用い、これがゼロであるという制約条件の下で目的関数を最適化します。これによりLightGBMモデルの予測スコアに対する最適な閾値を探索します。我々の精度指標はBalanced accuracyなので、学習用データをリサンプルし、正例と負例の数を等しくした学習用データを作成しておくと効果的な最適化をすることができます。
まずは、ThresholdOptimizerのインスタンスを作成します。引数には補正したいモデル(LightGBMモデル)と制約条件となる格差メトリクス(等価オッズ差)を渡します。

正例と負例の数を等しくした学習用データを作成します。

正例と負例のバランスを調節した学習用データをThresholdOptimizerインスタンスにfitさせます。

ThresholdOptimizerモデルに引数としてテスト用データとそのセンシティブ属性を渡します。

今まで作成したモデルの精度指標と公平性指標の値を比較してみましょう。そのために、モデル名とその予測ラベル、予測スコアの辞書を作成し、補助関数を適用します。

上表を見るとThresholdOptimizerアルゴリズムは、複数の格差メトリクスにおいて不公平性を緩和できていることが分かります。しかし、精度指標(Overall AUCやOverall balanced error rate)は悪化しています。このような急激な変化の原因は、精度と公平性のトレードオフによるものもありますが、グループ間でのレコード数の差異の影響が大きいことも理由の1つだと考えられます。実際に、女性のデータは男性の1.5倍ほど多いです。
作成したモデルをFairlearn Dashboardでも比較してみましょう。y_predにモデル名と予測ラベルの辞書を渡すことで、比較が可能となります。Fairlearn Dashboardの設定は先ほどと同じなので省略します。

Disparity in accuracyを選択しているので、縦軸は属性間の精度差を表します。

Disparity in predictionsでは、縦軸は属性間の予測ラベルの正例率の差を表しています。いずれの場合も対角線上に点が並んでおり、精度と公平性のトレードオフが見て取れます。
グラフ上のモデルを表す点を選択することで、個別のモデルに対してFairlearn Dashboardの出力結果を見ることができます。実際に、ThresholdOptimizerを表す点を選択してみましょう。


上のグラフを見ると、男性の精度を下げることなく公平性を満たすように女性の精度を調節できていることが分かります。
最後に、モデル間で予測格差がどれほど緩和したかを可視化してみましょう。Disparity in predictionsは予測ラベルの正例率を確認することができました。ここでは、正解ラベルの正例率も合わせてグラフ化してみましょう。
まず、必要なデータをデータフレームに格納します。

下記のコードで可視化を行います。

上図を見ると、LightGBMモデルでは女性を実際のデフォルト率よりも高く予測していることが分かります。ThresholdOptimizerではこの男女間での格差が緩和されていることが分かります。

最後に

今回の調査を通じて、日本では機械学習の公平性に関する情報量はまだ少ないように感じられました。しかし、国外に目を向けてみると、公平性に対する情報量に大きな差があり、研究も盛んに行われています。企業もAIシステムの使用に対して公平性のガイドラインを提示するなどの製品の安全性を主張するようになっています。近い将来には、何かしらの公平性規準を満たさない製品は販売できなくなるなど法整備が行われる可能性も十分あり得ます。もしそうなった場合でも、持続的で安全なAIサービスが提供できるように今からの公平性への対策を講じる必要があるでしょう。

contactお問合わせ

お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。

03-6383-3261

受付時間:9:00-18:00(土日祝休)

お問合わせ 資料のダウンロードはこちら
AIの活用をお考えなら、資料のダウンロードはこちら

お問い合わせはこちらから

03-6383-3261 メールでのお問い合わせはこちら