分類器の性能評価の世界へようこそ!

CS2カリキュラムにおける機械学習の旅の中で、私たちは予測モデルの構築方法を学んできました。しかし、そのモデルが実際に「良いもの」かどうか、どのように判断すればよいのでしょうか?例えば、あるアクチュアリーが契約者の解約(ポリシーの失効)を予測するモデルを構築したとします。もしモデルが全員に対して一律で「解約しない」と答えたら、解約する人は少ないため90%の正解率になるかもしれませんが、ビジネス上は全く使い物になりませんよね!

この章では、混同行列(Confusion Matrix)適合率(Precision)再現率(Recall)ROC曲線といったツールを使い、単純な正解率を超えた評価方法を学びます。これらの指標は、二値分類器の強みと弱みを理解するのに役立ちます。用語が難しそうに聞こえても大丈夫です。ステップバイステップで紐解いていきましょう!

1. 基本:混同行列(Confusion Matrix)

高度なスコアを計算する前に、モデルの結果を整理する必要があります。混同行列は、分類アルゴリズムの性能を要約するための表です。二値分類(結果が陽性(Positive)陰性(Negative)の2つだけ)の場合、行列は以下のようになります:

実際の陽性(Actual Positive): イベントが実際に発生した。
実際の陰性(Actual Negative): イベントが発生しなかった。
予測陽性(Predicted Positive): モデルがイベントが発生すると予測した。
予測陰性(Predicted Negative): モデルがイベントが発生しないと予測した。

これにより、4つの象限が生まれます:

  • 真陽性 (True Positive: TP): 陽性と予測し、実際に陽性だった。(成功!)
  • 真陰性 (True Negative: TN): 陰性と予測し、実際に陰性だった。(成功!)
  • 偽陽性 (False Positive: FP): 陽性と予測したが、実際は陰性だった。(これは第1種の誤り。いわゆる「空振り(誤報)」です。)
  • 偽陰性 (False Negative: FN): 陰性と予測したが、実際は陽性だった。(これは第2種の誤り。いわゆる「見逃し」です。)
煙探知機の例え

煙探知機を二値分類器として考えてみましょう:

  • TP: 火災が発生し、警報が鳴った。(素晴らしい!)
  • TN: 火災はなく、警報は鳴らない。(素晴らしい!)
  • FP: トーストを焦がしたが火災ではないのに、警報が鳴った。(迷惑な誤報。)
  • FN: 大規模な火災が発生しているのに、警報が鳴らない。(危険な見逃し!)

クイックレビュー: 混同行列自体は指標ではありません。他のすべての指標を計算するための「データソース」なのです!

2. 基本的な性能指標

TP、TN、FP、FNが出揃ったところで、スコアを計算してみましょう。

正解率(Accuracy)

これは最も直感的な指標です。「全体として、モデルがどれくらいの割合で正解したか?」を問うものです。

\( \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} \)

落とし穴: データが「不均衡(imbalanced)」な場合、正解率は非常に誤解を招く可能性があります。契約者の99%が保険金請求をしない場合、全員に「請求なし」と予測するだけのモデルは99%の正解率となりますが、実際に請求する1%の人を特定することは一生できません!

適合率(Precision)

適合率は予測陽性に焦点を当てます。「モデルが『陽性』と予測したすべてのケースのうち、実際に『陽性』だったのはどれくらいか?」を問うものです。

\( \text{Precision} = \frac{TP}{TP + FP} \)

偽陽性のコストが高い場合(例:保険金詐欺の疑いをかける場合など、確実性を重視したいとき)に使用します。

再現率(Recall / Sensitivity)

再現率は実際の陽性に焦点を当てます。「実際に存在する『陽性』のケースのうち、どれだけを漏れなく見つけ出せたか?」を問うものです。

\( \text{Recall} = \frac{TP}{TP + FN} \)

偽陰性のコストが高い場合(例:生命保険の加入審査で重大な疾患を見逃してはいけない場合など)に使用します。

特異度(Specificity)

これは再現率の「陰性」版です。「実際に存在する『陰性』のケースのうち、どれだけを正しく『陰性』と識別できたか?」を問うものです。

\( \text{Specificity} = \frac{TN}{TN + FP} \)

覚え方のコツ:
PrecisionはPredictions(分母は予測の行)。
RecallはReality(分母は実際の列)。

3. F1スコア:バランスの調整

時には適合率と再現率の両方を兼ね備えたモデルが欲しいものです。しかし、通常はトレードオフの関係にあり、一方を高めようとするともう一方が下がってしまいます。F1スコアは、調和平均を用いてこれらを1つの数値に統合した指標です。

\( F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} \)

なぜ調和平均を使うのか? 単純な平均とは異なり、調和平均は極端な値を低く評価します。適合率が1.0でも再現率が0.0なら、F1スコアは0.5ではなく0になります。これにより、不均衡なデータセットに対しても非常に堅牢な指標となります。

重要なポイント: 可能な限り多くのケースを見つけ出すこと(再現率)と、予測の信頼性を確保すること(適合率)のバランスをとりたいときにF1スコアを使用しましょう。

4. 診断:ROC曲線とAUC

多くの分類器は単に「Yes」か「No」を出力するわけではありません。代わりに「この人が解約する確率は85%です」といった確率を出力します。これを「Yes/No」の判断にするには、閾値(しきいち)を決める必要があります(例:50%以上なら「Yes」とする)。

この閾値を変えると、TP率とFP率も変化します。ROC曲線(Receiver Operating Characteristic)は、以下をプロットしたグラフです:

  • Y軸: 真陽性率(再現率)
  • X軸: 偽陽性率(1 - 特異度)

閾値を低くすれば、陽性を多く捕まえられます(再現率は高まる)が、同時に誤報も増えてしまいます(偽陽性率も高まる)。

曲線下面積(AUC: Area Under the Curve)

AUCはROC曲線の下側の面積の合計です。あらゆる可能な閾値におけるモデルの性能を1つの数字で評価できます。

  • AUC = 1.0: 完璧なモデル。
  • AUC = 0.5: ランダムな推測と同等(対角線)。
  • AUC < 0.5: ランダム以下の性能!

知っていましたか? ROC曲線はもともと第二次世界大戦中に、レーダーオペレーターが日本の航空機とランダムなノイズ(鳥など)を区別するために開発されたものなのです!

5. まとめとよくある間違い

避けるべきよくある間違い:
  • 再現率と適合率の混同: 常に分母を確認しましょう!再現率は実際のグループに、適合率は予測されたグループに注目します。
  • 文脈を無視すること: IFoAの試験ではシナリオに注意してください。命に関わる疾患の問題なら、通常は適合率よりも再現率が重要です。低コストのマーケティングキャンペーンであれば、適合率はそれほど重要ではないかもしれません。
  • 正解率(Accuracy)のみを信頼すること: クラスのバランスを確認せずに高い正解率を信じてはいけません。
クイックレビューボックス:

混同行列: TP, TN, FP, FN。
正解率: 正解数 / 全体数。
適合率: TP / (TP + FP)。
再現率: TP / (TP + FN)。
F1スコア: 適合率と再現率のバランス。
ROC曲線: 再現率と誤報のトレードオフを視覚化。
AUC: ROC曲線の「成績表」(0.5〜1.0)。

これでコアとなる評価指標を制覇しました!これらのツールは、予測モデルを扱うすべてのアクチュアリーにとって不可欠であり、リスクを正確に測定し、モデルの信頼性を担保するために重要です。