新米データサイエンティストの日常（架空）｜評価指標編

# はじめに
今回は、「新米データサイエンティストの日常」シリーズの第1弾になります。
新米データサイエンティストが躓きがちなテーマについて、先輩データサイエンティストと会話しているシーンをChatGPTに生成してもらいました。

# 登場人物（架空）
👩‍💻 **佐藤** ：新卒1年目の新米データサイエンティスト。OJTで実務を学んでいる最中。  
👨‍🏫 **田中** ：実務経験5年の先輩データサイエンティスト。佐藤のOJT担当。  

---

#### **💬 モデルの評価指標を選ぶ**
**佐藤:** 田中さん、ちょっとモデルの評価について相談したいんですが、今いいですか？  

**田中:** もちろん！どうしたの？  

**佐藤:** クレジットカードの不正検知モデルを作ってみたんですが、Accuracyが98%くらい出ていて、結構いい精度になったと思うんです。  

**田中:** なるほど、Accuracyね…。ちょっと待って、それって不正な取引の割合ってどのくらい？  

**佐藤:** えーと…確か、全体の0.5%くらいですね。ほとんどの取引は正常です。  

**田中:** そしたら、Accuracy 98%っていうのは実はあまり意味がないかもしれないよ。  

**佐藤:** えっ、なんでですか？98%って、結構良い数字に見えますけど…。  

---

#### **💡 Accuracyの落とし穴**
**田中:** じゃあ、ちょっと極端な例を考えてみよう。仮にすべての取引を「正常」と予測したら、Accuracyってどのくらいになると思う？  

**佐藤:** えーと…0.5%が不正だから、残りの99.5%は正常ですよね。だから、全部「正常」って予測すれば…99.5%？  

**田中:** そう、それが問題なんだよ。もしモデルが何もせずに「すべて正常」と予測したら、99.5%のAccuracyが出る。でも、それって不正取引を1件も検知できてないよね？  

**佐藤:** …たしかに！じゃあ、Accuracyが高いだけじゃダメなんですね。  

**田中:** その通り。不正検知のように不均衡データ（正常がほとんどで、不正が少ないデータ）の場合、Accuracyは役に立たないことが多いんだ。  

---

#### **📊 PrecisionとRecallの重要性**
**佐藤:** じゃあ、どうやってモデルの性能を評価すればいいんでしょうか？  

**田中:** ここで重要になるのが、**Precision（適合率）**と**Recall（再現率）**だよ。  

**佐藤:** それ、授業で聞いたことあります！えーと、Precisionは「不正と予測した取引のうち、本当に不正だった割合」ですね。  

**田中:** そう！じゃあ、Recallは？  

**佐藤:** Recallは「実際の不正取引のうち、モデルが正しく検知できた割合」…ですよね？  

**田中:** 正解！で、不正検知では特に**Recall**が重要になることが多い。なぜかわかる？  

**佐藤:** えーっと…不正を見逃すと、クレジットカードの持ち主や会社に大きな損害が出るから…ですか？  

**田中:** その通り！もしモデルが「正常」と間違って予測すると、不正を見逃すことになる。それは会社にとって大問題だよね。  

---

#### **⚖ PrecisionとRecallのトレードオフ**
**佐藤:** でも、Recallばかり重視すると、普通の取引も「不正」と判定しちゃいませんか？  

**田中:** いい視点だね！実際、Recallを上げるには「とにかく不正っぽいものを全部検知する」方向にするから、誤検知が増えてしまう。  

**佐藤:** たとえば、正常な取引までブロックされちゃうと、お客さんが困りますよね…。  

**田中:** そうそう。だから**Precisionとのバランスを取る**必要があるんだ。そのバランスを評価する指標が**F1スコア**だよ。  

**佐藤:** F1スコアは、PrecisionとRecallの調和平均を取る指標でしたよね？  

**田中:** その通り！PrecisionもRecallも高いほど、F1スコアが高くなる。だから、不正検知モデルの評価には、AccuracyよりもF1スコアを見たほうがいいんだよ。  

---

#### **📈 ROC-AUCも見るべき？**
**佐藤:** ところで、ROC-AUCも見たほうがいいって聞いたんですが、不正検知にも使えますか？  

**田中:** うん、使えるよ！ROC-AUCは、モデルが「不正」と「正常」をどれだけうまく区別できるかを測る指標なんだ。  

**佐藤:** なるほど…AUCが1.0に近いほど、モデルがしっかり分類できているってことですね？  

**田中:** そういうこと！でも、ROC-AUCだけだと不均衡データに弱いことがあるから、**PR-AUC（Precision-Recall AUC）**を見るのもアリだね。  

**佐藤:** なるほど！じゃあ、まとめると…  

---

#### **✅ クレジットカード不正検知の評価指標**
| 指標 | 役割 |
|------|------|
| **Precision** | 誤検知を減らす（正常な取引を不正と誤認しない） |
| **Recall** | 不正を見逃さない（重要） |
| **F1スコア** | PrecisionとRecallのバランスを見る |
| **ROC-AUC** | モデル全体の判別能力を測る |
| **PR-AUC** | 不均衡データでも適切に評価できる |

---

#### **🎯 最適な評価指標の選び方**
**佐藤:** じゃあ、今回のモデルでは、Recallを重視しつつ、Precisionとのバランスも考えてF1スコアをチェックするのが良さそうですね！  

**田中:** そうだね！ただ、実際の運用ではビジネス的な要件も考える必要があるよ。たとえば「誤検知を増やしても、不正を徹底的に防ぎたい」ならRecall重視、「顧客への影響を最小限にしたい」ならPrecision重視、というふうに調整するんだ。  

**佐藤:** なるほど、単に機械的に指標を選ぶんじゃなくて、ビジネスの目的に合わせるのが大事なんですね！  

**田中:** そういうこと！よく理解できてるね。次は、実際にPrecisionやRecallを計算してみて、どう調整するか考えてみようか。  

**佐藤:** わかりました！頑張ります！  

---

#### **💬 PrecisionとRecall、どっちがどっち？**
**佐藤:** 田中さん、さっきの話、理解できたつもりなんですが…正直、**PrecisionとRecallの意味がいつもごっちゃになる**んですよね…。  

**田中:** それ、めちゃくちゃ分かるよ（笑）。実は、僕も最初は混乱してた。いい覚え方があるから教えるね。  

**佐藤:** ぜひお願いします！  

---

#### **🎯 Precisionの覚え方**
**田中:** まずは**Precision（適合率）**からいこうか。これは「不正と予測したもののうち、本当に不正だった割合」だったよね？  

**佐藤:** そうですね。でも、なんで「Precision」っていうんですか？  

**田中:** Precisionは「精密さ」とか「正確さ」って意味があるよね？つまり、「不正と言ったものがどれくらい本当に不正だったか」を測っているんだ。  

**佐藤:** あっ、なるほど！適当に「不正！」って言ってると、Precisionが下がるってことですね。  

**田中:** そうそう。だからPrecisionが高いってことは、「怪しい」と言った取引の中に、本当に不正が多いってこと。  

**佐藤:** たとえば…裁判で言うと、「有罪判決を出したうち、どれくらい本当に犯罪者だったか」みたいな感じですか？  

**田中:** まさにその通り！だから、**冤罪を減らしたいならPrecisionを重視する**んだ。  

**佐藤:** なるほど…じゃあ、不正検知でPrecisionを上げるには？  

**田中:** **「本当に怪しいものだけを不正と判断する」ように閾値を厳しくする**と、Precisionは上がる。でも、その分、見逃す不正も増えちゃうから気をつけないとね。  

**佐藤:** たしかに…Precisionを上げすぎると、Recallが下がるわけですね。  

---

#### **🚨 Recallの覚え方**
**田中:** 次に**Recall（再現率）**。これは「実際の不正取引のうち、どれくらい検知できたか」だったよね？  

**佐藤:** はい。でも、「再現」っていう単語がいまいちピンとこないんですよね…。  

**田中:** うん、それも分かる。「再現」っていうのは、「不正をどれだけちゃんと見つけられたか」っていう意味だと思うといいよ。  

**佐藤:** うーん…Precisionは「精密さ」だけど、Recallは「網の広さ」みたいな感じですか？  

**田中:** そうそう！例えば、漁師が魚を獲るときに「大きな網」を使えばたくさんの魚を獲れるよね？  

**佐藤:** でも、大きすぎる網だと、小魚まで獲っちゃうし、ゴミも引っかかる…？  

**田中:** そう！それがまさに**「Recallを上げすぎると、Precisionが下がる」**という話だね。  

**佐藤:** たとえば、裁判で言うと「本当の犯罪者をどれだけ逃さずに捕まえられるか」ってことですね？  

**田中:** そう！だから**「犯罪者を見逃したくないならRecallを重視」**するんだ。  

**佐藤:** なるほど…！  

---

#### **⚖ PrecisionとRecallのトレードオフ**
**佐藤:** じゃあ、まとめると…  

- **Precision = 有罪判決を出した人のうち、本当に犯罪者だった割合（冤罪を減らしたいなら重視）**  
- **Recall = 実際の犯罪者のうち、どれだけ捕まえられたか（見逃したくないなら重視）**  

ってことですね？  

**田中:** その通り！で、不正検知では「犯罪者を見逃す」ほうがヤバいから、普通は**Recallを重視**するんだ。  

**佐藤:** でも、それだとPrecisionが下がって、無実の人まで「不正！」って言っちゃうんですよね？  

**田中:** そう。それでバランスを取るためにあるのが、**F1スコア**だよ。  

---

#### **📏 F1スコアの覚え方**
**佐藤:** F1スコアって、PrecisionとRecallのバランスを取る指標でしたよね？  

**田中:** そうそう。「調和平均」を使ってるから、**どっちかが極端に低いと、F1スコアも低くなる**ようになってるんだ。  

**佐藤:** えーっと…たとえば、Precisionが100%だけどRecallが1%だと、F1スコアはあまり高くならないってことですね？  

**田中:** そう！どっちもある程度バランスが取れてないと、F1スコアは上がらないんだよ。 

---

#### **📊 ROC-AUCとPR-AUCの違い**
**佐藤:** あと、さっき言ってたROC-AUCとPR-AUCって、どう違うんでしたっけ？  

**田中:** 簡単に言うと、**ROC-AUCは全体の分類能力を測る**のに対して、**PR-AUCは特に少数派（不正取引）の検出能力を測る**んだ。  

**佐藤:** 不均衡データではPR-AUCを使ったほうがいいってことですね！  

**田中:** その通り！実際の業務では、Precision-Recallカーブを見ながらモデルの性能をチェックすることが多いよ。  

---

#### **📌 佐藤の覚え方メモ**
| 指標 | 覚え方 | 使いどころ |
|------|------|------|
| **Precision**（適合率） | **「有罪判決を出したうち、どれくらい本当に犯罪者か」** | 誤検知を減らしたいとき |
| **Recall**（再現率） | **「実際の犯罪者をどれだけ逃さず捕まえたか」** | 見逃しを減らしたいとき |
| **F1スコア** | **PrecisionとRecallのバランスを見る** | 両方をバランスよく評価したいとき |
| **ROC-AUC** | **全体の分類能力を測る** | クラスのバランスが取れているとき |
| **PR-AUC** | **少数派（不正）の検出能力を測る** | クラスが不均衡なとき |

---

#### **🚀 最後に**
**佐藤:** ありがとうございます！これでPrecisionとRecallがスッキリしました！  

**田中:** よかった！あとは実際にPrecisionとRecallを変えながら、どんな影響が出るか試してみるのが一番だね。  

**佐藤:** はい！モデルの評価結果を見ながら、調整してみます！