シャープレイ値とその応用

人工知能技術 機械学習技術 オントロジー技術 デジタルトランスフォーメーション技術 知識情報処理技術 強化学習技術 確率的生成モデル技術 説明できる機械学習技術 自然言語処理技術 本ブログのナビ
シャープレイ値

シャープレイ値は、1953年にロイド・シャープレイ(Lloyd Shapley)によって提案された理論であり、協力ゲームにおける各プレイヤーがどれだけの報酬を受け取るべきかを公平な基準に基づいて決定する方法である。

この考え方は、機械学習においても応用されており、モデルの予測に対して、各特徴量(feature)をプレイヤー、そして予測スコアや利益の変化を報酬とみなすことで、各特徴量がどれだけ予測結果に貢献したかを定量的に評価する枠組みとして用いられている。

シャープレイ値が「公平な貢献度の評価」として機能するためには、次の4つの公理(条件)を満たす必要がある。

  • まず1つ目は効率性(Efficiency)で、これは、すべてのプレイヤー(特徴量)の貢献度の合計が、モデル全体の予測結果と一致することを意味する。すなわち、どの特徴量にも属さない“余剰”な貢献が存在しないということになる。
  • 2つ目は対称性(Symmetry)で、これは、ある2つの特徴量が同じように予測に貢献している場合、彼らには等しいシャープレイ値が割り当てられるべきである、という考え方になる。
  • 3つ目はダミー性(Dummy player)で、もしある特徴量が、どの特徴量の組み合わせに加えても予測結果に影響を与えない場合、その特徴量の貢献度(シャープレイ値)は0でなければならない。
  • そして4つ目は加法性(Additivity)で、これは、複数のモデルがある場合、それらを合成して1つのモデルを作っても、それぞれのモデルにおけるシャープレイ値の合計が新しいモデルの貢献度となる、という性質になる。

これら4つの公理をすべて満たすことで、シャープレイ値は理論的に「唯一の公平な貢献度の割り当て方法」とされている。

シャープレイ値の計算方法は、ゲーム理論の枠組みに従って、各特徴量がモデルの予測にどれだけ貢献しているかを平均的に評価する手法になる。

このとき、各特徴量は「プレイヤー」として扱われ、予測値の変化は「報酬」とみなされる。

具体的にはまず、モデルに含まれるすべての特徴量の順列(順番)を列挙する。特徴量が 個ある場合、その順列の数は(nの階乗)通りになる。

それぞれの順序に対して、特徴量を1つずつ順にモデルに追加していき、その時点での予測値の変化を記録する。これによって、各特徴量がその順序においてどれだけの予測貢献をもたらしたかがわかる。

こうして得られたすべての順序における貢献度の平均を取ることで、ある特徴量のシャープレイ値(平均的な貢献度)が計算される。

この考え方は、以下の数式で表される。\[\phi_i=\sum_{S\subseteq N\setminus \{i\}}\frac{|S|!\cdot (|N|-|S|-1)!}{|N|!}[v(S\cup\{i\})-v(S)]\]

ここで:

  • \(\phi_i\):特徴量 のシャープレイ値(貢献度)

  • :すべての特徴量の集合

  • :特徴量 を含まない部分集合(特徴量の一部だけを使った場合の組み合わせ)

  • :特徴量集合 に基づく予測値
  • :特徴量 を追加したときに起こる予測値の変化(すなわち、貢献)

この計算は理論的には非常に厳密だが、特徴量の数が増えると計算コストが急増するため、実用的には近似手法(例:SHAPでのサンプリング)が用いられることが一般的となる。

シャープレイ値(SHAP)の直感的な理解を深めるために、「ローンの承認モデル」の例を用いて以下に説明する。

このモデルは、個人の属性情報をもとに、ローンの申請が「承認されるかどうか」を予測するもので、入力される特徴量としては、「年収」「職業」「年齢」「借入金額」などが挙げられる。

ある申請者に対してモデルが「承認」と予測したとする。このとき、SHAPを使うと、各特徴量が予測にどのように貢献したかを次のように分解して示すことができる。

  • 「年収」:+0.3(高年収が承認の可能性を高めた)

  • 「職業」:+0.2(安定した職業であったことがプラスに働いた)

  • 「年齢」:-0.1(年齢がややマイナスに影響した)

  • 「借入金額」:-0.4(借入希望額が大きすぎたため、マイナス要因となった)

これらの貢献度を合計すると +0.3 + 0.2 – 0.1 – 0.4 = 0.0 となり、これはモデルの基準スコア(たとえば中立点)からの変化分をすべての特徴量が説明したことを意味している。

このようにSHAPは、ブラックボックス的な予測結果を要素ごとに「なぜそうなったか」を定量的に可視化してくれるため、モデルの透明性と信頼性を高めるうえで非常に有用なアプローチとなる。

機械学習への応用

機械学習におけるシャープレイ値の代表的な応用として、SHAP(SHapley Additive exPlanations)が広く知られている。SHAPは、シャープレイ値の理論に基づき、各特徴量が個々の予測にどのように貢献しているかを定量的かつ直感的に可視化・説明できるツールとなっている。

このライブラリは、XGBoost や LightGBM などの勾配ブースティング系アルゴリズムに対して高い互換性を持つほか、ニューラルネットワークを含む深層学習モデルや線形モデル、SVMなど、幅広い機械学習モデルにも対応している。

SHAPを用いることで、以下のような応用が可能になる。

  • 各特徴量の個別予測に対する影響を可視化(ローカル解釈)

  • データ全体における重要な特徴量の傾向分析(グローバル解釈)

  • モデルの挙動が期待通りかどうかの透明性の確保

  • ビジネスや医療などの現場で説明責任(アカウンタビリティ)を果たすための根拠提示

また、SHAP以外のシャープレイ値の機械学習応用例としては以下のようなものがある。

  1. モデル比較・選択: シャープレイ値を用いて、異なるモデルがどの特徴量にどの程度依存しているかを比較できる。

  2. 異常検知(Anomaly Detection): 通常と異なる特徴量の貢献パターンを検出し、異常の根本原因を特定。

  3. 公正性分析(Fairness Analysis): 年齢・性別・人種などのセンシティブな特徴が不当に予測に影響していないかを確認。

  4. 因果推論への応用: シャープレイ値を拡張して、「どの変数が介入の効果に寄与しているか」の説明に使われる研究も進行中。

  5. 強化学習における報酬配分: 複数のエージェントが共同で得た報酬を、各エージェントの貢献に応じて配分する際にシャープレイ値を応用。

SHAPは、近年のExplainable AI(XAI)の中核をなす技術の1つとなっている。

実装例

以下に、SHAPを使ってローン承認モデルの予測を解釈する Python のコード例と可視化方法を紹介します。

1. 前提:必要なライブラリのインストール

pip install shap xgboost scikit-learn matplotlib

2. モデルの学習とSHAPによる説明

import shap
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer  # サンプルデータとして使用
import matplotlib.pyplot as plt

# データセットを読み込み(本来はローンデータを使う)
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

# XGBoostモデルを学習
model = xgb.XGBClassifier(eval_metric='logloss', use_label_encoder=False)
model.fit(X_train, y_train)

# SHAP値を計算
explainer = shap.Explainer(model)
shap_values = explainer(X_test)

3. SHAPによる可視化

① 単一予測の説明(force plot)

# 単一の予測(例:最初のテストデータ)
shap.initjs()
shap.force_plot(explainer.expected_value, shap_values[0].values, X_test[0])

インタラクティブなグラフで、どの特徴が予測を上げ下げしたかを色で表示

② 特徴量の影響を全体的に可視化(summary plot)

shap.summary_plot(shap_values, X_test)

→ 全体の予測に対して「どの特徴量が強く効いていたか」を示すバイオリンプロット形式の要約グラフ

③ 各特徴の影響と値の関係を可視化(dependence plot)

# 例:特徴量 index=0(最初の特徴)の値とSHAP値の関係
shap.dependence_plot(0, shap_values.values, X_test)

→ ある特徴量の値がどのように予測に影響しているかを確認可能

適用事例

以下に、シャープレイ値(SHAP)を用いた具体的な適用事例について述べる。

1. 銀行のローン審査(与信モデル)

    • 課題:AIが「なぜこの人にローンを拒否したのか?」という説明責任。

    • SHAPの活用

      • 各申請者に対して、「借入金額が多すぎる」「信用スコアが低い」などの個別説明を提示。

      • 審査官が予測根拠を理解しやすくなり、説明責任と公正性が向上

    • 導入企業例:複数の欧米銀行や日本国内の金融機関で導入事例あり。

2. 医療分野:病気のリスク予測

    • 課題:機械学習モデルが「どの患者に治療を優先すべきか」を判断する際、根拠が不明では使えない。

    • SHAPの活用

      • 患者の血圧、血糖値、年齢、家族歴などに対して、どの因子が予測にどれだけ寄与したかを明示。

      • 医師がSHAPの出力を確認しながら診断や治療方針を決定。

    • 研究例:乳がん、糖尿病、心疾患リスクモデルで多数の論文あり。

3. 製造業:設備故障の予測保全

    • 課題:センサーデータに基づく異常予測が「なぜ異常と判断したか」を説明できない。

    • SHAPの活用

      • 温度や振動、圧力などのセンサーデータに対して、故障を示唆する特徴の寄与度を明示

      • エンジニアが事前にメンテナンスを計画しやすくなる。

4. 保険業界:不正請求検出(Fraud Detection)

    • 課題:請求内容が不正と判断された場合に、その理由を明示する必要がある。

    • SHAPの活用

      • 顧客の請求履歴、過去の事故件数、契約内容などから、「この特徴が不審だった」と根拠を提示

      • 説明性を確保したうえで、自動フラグ判定の導入が可能に。

5. eコマース:顧客の購買予測とレコメンド

    • 課題:レコメンドエンジンの結果に対するユーザーの納得感の向上

    • SHAPの活用

      • 「この商品を推した理由は、過去の購入パターンと類似しているため」といった個別根拠を可視化

      • ユーザーの信頼性向上と離脱率低下に寄与。

参考文献

1. 《理論基礎・ゲーム理論より理解したい人向け》

Game Theory and its Applications in Market Dynamics with Python

A Value for n-Person Games

  • 著者:Lloyd Shapley(1953年 論文)

  • 内容:シャープレイ値の原典。ゲーム理論における価値配分の公理を数学的に導出。

2. 《機械学習・SHAP実践向け》

Interpretable Machine Learning

  • 著者:Christoph Molnar

  • 内容:SHAP、LIME、Partial Dependence Plot など、説明可能なAI技術を実践的に解説。図やコード付きで分かりやすい。

Explainable AI: Interpreting, Explaining and Visualizing Deep Learning

  • 著者:Ankur Taly ほか

  • 出版社:Springer

  • 内容:SHAPの解説に加え、深層学習の説明性に関するフレームワークや手法も紹介。

3. 《実装・Pythonで学びたい人向け》

Hands-On Explainable AI (XAI) with Python

  • 著者:Denis Rothman

  • 出版社:Packt Publishing

  • 内容:SHAPを含む複数のXAI手法をPythonで実装しながら学ぶスタイル。

コメント

タイトルとURLをコピーしました