AI・機械学習

SHAP値の見方をわかりやすく解説|summary plot(Beeswarm)で機械学習モデルを解釈する方法

AI・機械学習

はじめに――「この患者さん」から「患者集団全体」へ

前回のArticle 2では、Waterfall plotとForce plotを使って「1人の患者さんの予測を深掘りする」方法を解説しました。

「入院時FIMが低かったから退院予測が下振れした」「年齢が高めだったので予測が押し下げられた」——1人ひとりのSHAP値を積み上げて予測値に到達する、いわばミクロの視点でした。

今回はその視点を大きく引いて、マクロに切り替えます。

SHAP値のプロットには、目的やデータの切り口に応じてさまざまな種類(上図)がありますが、この記事で解説するのは上段の2つ(Bar plot と Summary plot)です。

テーマは:「患者集団全体では、どの変数がどのくらい重要だったのか?」

その問いに答えるのが、今回紹介する2つのプロットです。

  • Bar plot:「何が重要か」をシンプルなランキングで示す
  • Summary plot(Beeswarm):「どう重要か」——方向・分布・患者ごとのばらつきまで1枚で見せる

どちらも「個別のSHAP値(Article 2)を全患者分まとめて集計・可視化したもの」です。Waterfall plotで1人の患者を深掘りしたのと同じSHAP値を、今度は30人分まとめて眺める——そのイメージを持ちながら読んでください。

※この記事で使用しているデータは機械的に生成された架空のものです。臨床の実態を反映するものではありません。

1. Bar plot:「何が重要か」をシンプルに把握する

Bar plotとは

Bar plotは、各特徴量の平均絶対SHAP値を棒グラフで並べたものです。

「平均絶対SHAP値」というと難しそうですが、意味はシンプルです。

各患者のSHAP値は正(予測を上げる)にも負(下げる)にもなります。その「プラス・マイナスを無視して大きさだけを取り出し(=絶対値)、全患者で平均した数値」が平均絶対SHAP値です。

棒が長い=平均的な影響が大きい(重要な変数)
棒が短い=平均的な影響が小さい(あまり予測に使われていない変数)

という読み方になります。

Bar plotの強みと限界

強み:シンプルさ

Bar plotの最大の強みは、誰にでも伝わるわかりやすさです。

「1位:入院時FIM(運動)、2位:年齢、3位:握力、4位:MMSE……」

このような変数ランキングは、学会発表のスライドにも、上司への報告にも、論文の本文にもそのまま使えます。複雑な機械学習モデルの「重要な変数」を、統計に詳しくない相手にも説明できる入口として非常に有用です。

限界:「どう」重要かは見えない

ただし、Bar plotにはひとつ大きな限界があります。

「MMSEが上位の重要変数」とわかっても——

  • スコアが高いほど予測FIMが上がるのか、下がるのか?
  • すべての患者で一様に影響しているのか、ばらついているのか?
  • スコアが「ちょっと下がっただけ」の段階と「著しく低い」段階で、影響の度合いに変化はあるのか?

これらは、Bar plotからはまったく読み取れません。

そこで登場するのが次のBeeswarm plotです。

2. Summary plot(Beeswarm):「どう重要か」まで1枚で見える

Summary plotとは

Summary plotは、全患者の個別SHAP値をドットでプロットしたグラフです。

「Beeswarm plot(サマリープロット)」と呼ばれることもあります。

Article 2で解説したWaterfall plotを思い出してください。あのグラフは「1人の患者の各変数のSHAP値を縦に積み上げた」ものでした。

Summary plotは、その「1人分のSHAP値」を30人分、全員横に並べて見せたものです。ミクロの集積がマクロになる、という感覚で捉えると理解しやすいでしょう。

3つの情報が1枚に

Summary plotには、1枚のグラフの中に3種類の情報が詰まっています。

① 縦軸:特徴量の重要度順
Bar plotと同じく、上に来るほど重要な変数です。

② 横軸:SHAP値(影響の方向)
右側(プラス)=その患者の退院FIM予測を押し上げた変数
左側(マイナス)=押し下げた変数

③ ドットの色:その患者の特徴量の値の大小
標準配色では、赤=その変数の値が大きい患者、青=小さい患者を示します(中間値は紫にグラデーションします)。

この3つを組み合わせて読むと、Bar plotでは見えなかった「どう重要か」が見えてきます。

たとえば「入院時FIM(運動)」の行を見たとき——

  • 赤いドット(FIMが高い患者)が右側(SHAP値プラス)に集まっている
  • 青いドット(FIMが低い患者)が左側(SHAP値マイナス)に集まっている

この並びから「入院時の運動FIMが高いほど、退院FIMの予測を上げる方向に働いている(正の相関がある)」と明快に読み取れます。

Bar plotとの対比まとめ

Bar plotSummary plot
見える情報重要度のランキングのみ重要度+影響の方向+分布のばらつき
向く場面学会・論文・上司報告モデルの精査・研究チームでの議論
読みやすさ★★★★★★★★☆☆
情報量★★☆☆☆★★★★★

「まず全体像をざっくり把握したい→Bar plot」「変数ごとに詳しく読み込みたい→Beeswarm」という使い分けが基本です。

3. インタラクティブデモで体感する

以下のデモは、FIM退院予測モデル(架空データ・n=30)のSummary plotとBar plotをインタラクティブに操作できるものです。

デモで試してほしいこと

ドットにホバーしてみてください。「患者#〇〇」の年齢・MMSE・FIM値・SHAP値が表示されます。Summary plotのマクロなドットが、実は1人ひとりの個別データと地続きであることを体感できます。

タブを「Bar plot」に切り替えて、変数ランキングだけを見た場合と、Summary plotで変数ごとの分布を見た場合で、得られる情報の差を比べてみてください。

カラーパレットを「Viridis」に切り替えてみてください。医療系の学会発表や論文投稿では、色覚多様性への配慮(カラーユニバーサルデザイン)が年々重視されています。標準の赤青(紫)は直感的ですが、色覚特性によっては境界が曖昧に見えたり、白黒印刷で潰れてしまうことがあります。Viridisは「色の見え方に左右されず、白黒印刷でもグラデーションが正しく認識できる」優れたパレットです。ご自身の研究発表のグラフィックを作る際の選択肢として、ぜひ知っておいてください。

4. 読み解く際の注意点

多重共線性(VIF)の影響

臨床データでよく問題になるのが、変数同士の相関です。

たとえば今回含まれている「入院時FIM(認知)」と「MMSE」は、どちらも患者さんの認知機能を評価する指標であり、臨床的には非常に強く相関します。

このように意味が近く、相関の強い変数が複数モデルに含まれている場合、2つの変数が予測への影響(SHAP値)を「分け合う」形になります。その結果、それぞれの変数の重要度が本来よりも低く見積もられてしまう現象が起きます。

Bar plotやSummary plotを見て「MMSEもFIM認知も、どちらも中途半端な順位にいるな」と感じた場合、単に認知機能が重要でないと片付けるのではなく、「この2変数は多重共線性によって影響力を奪い合っているのかもしれない」と疑う視点を持つことが解釈の精度を上げます。

外れ値の目立ちやすさ

Summary plotは全サンプルをドットで表示します。そのため、大半の患者のドットが集まっているところから大きく外れた位置にポツンとあるドットが目立ちます。

このようなドットは外れ値(他の患者と大きく異なるSHAP値を持つ症例)である可能性が高いです。

「なぜあの1点だけ離れているのか」を個別に確認することで、モデルが苦手とする特殊なケースや、データ入力エラーを発見できることもあります。実務では外れ値を見つけたら、必ず個別に内訳を確認する習慣をつけましょう。

5. Summary plotで「非線形パターン」を発見する

Summary plotのメリットの一つに、線形回帰(直線的な関係)では完全に見落とされてしまう「非線形(曲線的・複雑な)パターン」の予感をつかめる点があります。今回のデモデータには、臨床によくある2つの非線形パターンが隠されています。

① MMSE:満点からの「急落カーブ」

まずは「MMSE(認知機能スクリーニング検査)」の行に注目してください。

ドットの色を見ると、赤いドット(30点満点に近い患者)は右側のゼロ付近、つまり「退院FIM予測に良くも悪くもあまり影響を与えない(±0)」という位置にきゅっと固まっています。

ところが、わずかに点数が下がった中間層(紫のドット、24〜27点付近)になると、ドットが急激に左側(マイナス方向)へと突き抜けるように配置されているのがわかります。そして、さらに点数が低い青いドット(20点以下など)になっても、左への突き抜け方はなだらかに強まるだけで、紫の段階と劇的な差はありません。

これは、「認知機能は満点から少しでも下がると急激に予後にネガティブな影響を与えるが、ある程度まで下がりきると悪影響の強さは頭打ちになる」という、医療現場の感覚に近い非線形な関係をAIが捉えていることを示唆しています。線形回帰では「1点下がるごとに一律で〇点下がる」としか表現できませんが、Summary plotならこの「急落のパターン」が色の変化から一目で予感できます。

② 年齢:若年重症と超高齢で下がる「山なりパターン」

もうひとつ面白いのが「年齢」の行です。色が綺麗に並んでおらず、少し複雑な分布をしていませんか?

よく見ると、中間層(紫のドット、60代後半など)が最も右側(プラス方向)にあり、赤いドット(85歳以上の超高齢者)が左側(マイナス方向)にあるのは直感的です。しかし、最も青いドット(40代などの若年者)の一部も、同じように左側のマイナス方向に潜り込んでいます。

回復期病棟において、本来リハビリの進捗が良いはずの若年層の予測が押し下げられている理由——それは臨床的には「若い年齢で回復期病棟に入ってくるということは、短期では在宅復帰できないほどの重篤な脳出血などを発症しているケースが多い」という背景(若年重症例)を、モデルが年齢とアウトカムの非線形性として学習しているためです。

まとめ

今回のポイントを整理します。

Bar plotSummary plot
何がわかる変数の重要度ランキング重要度+影響方向+分布のばらつき(非線形パターン)
各ドット/棒の意味全患者の平均絶対SHAP値1人の患者の1変数のSHAP値
向く場面学会・論文・報告モデル精査・研究チームでの議論
次のステップBeeswarmで「どう?」を確認Dependence plotで「なぜ?(精密な形状)」を確認

SHAP値(Bar plot / Beeswarm plot)に関連がある記事

コメント

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