第5章 データ準備・可視化技法とモデル化(モデル化・統計的評価)
DS検定の混同行列とROC曲線・AUCの計算例
DS検定(リテラシーレベル)の公式スキルチェックリストでは、分類モデルの精度を評価する方法が★1つ星に入っています。混同行列から、Accuracy・Precision・Recall・F値・特異度を求めること、ROC曲線とAUCの意味を理解することです。このページでは、200件の不良品検出の例で、5つの指標を手で計算します。正解率が高くても、見逃しや誤検出が多いことがあるため、指標は混同行列から複数並べて読みます。
このページは試験の学習用の整理です。数字はすべて説明用の架空の値です。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 混同行列は、実際の正解と予測の組み合わせを数えた2×2の表。4つのマスはTP・FN・FP・TN
- 200件の例(TP=30・FN=10・FP=20・TN=140)では、Accuracyは0.85、Precisionは0.60、Recallは0.75、特異度は0.875、F値は約0.667
- すべてを良品と予測するモデルでも、不良品が200件中40件なら、Accuracyは0.80になる。ただしRecallは0
- ROC曲線は、しきい値を変えながら、縦軸に真陽性率(Recall)、横軸に偽陽性率をとった曲線。AUCは、その下の面積を1つの数値にまとめたもの
混同行列の4つのマス
混同行列は、実際の正解と予測の組み合わせを件数で数えた表です。ここでは、不良品を「陽性」、良品を「陰性」と呼びます。200件のうち、実際の不良品は40件、良品は160件とします。
| マス | 意味 | この例の件数 |
|---|---|---|
| TP(真陽性) | 実際も陽性で、陽性と予測した | 30件 |
| FN(偽陰性) | 実際は陽性なのに、陰性と予測した(見逃し) | 10件 |
| FP(偽陽性) | 実際は陰性なのに、陽性と予測した(誤検出) | 20件 |
| TN(真陰性) | 実際も陰性で、陰性と予測した | 140件 |
合計は30+10+20+140=200件です。実際の不良品は、TPとFNを足した40件、実際の良品は、FPとTNを足した160件です。1文字目のT・Fは予測が当たったか外れたか、2文字目のP・Nは予測した側が陽性か陰性かを表します。TPは「陽性と予測して当たり」、FNは「陰性と予測して外れ」と読みます。
不良品検出の例で5つの指標を計算
5つの指標は、混同行列の4つの件数だけで求められます。定義は、scikit-learn公式文書の、適合率(陽性と予測したもののうち実際に陽性だった割合)と再現率(実際の陽性のうち見つけられた割合)に沿っています。
| 指標 | 求め方 | この例の計算 | 値 |
|---|---|---|---|
| Accuracy(正解率) | (TP+TN)÷全件数 | (30+140)÷200 | 0.85(85%) |
| Precision(適合率) | TP÷(TP+FP) | 30÷(30+20) | 0.60(60%) |
| Recall(再現率) | TP÷(TP+FN) | 30÷(30+10) | 0.75(75%) |
| 特異度 | TN÷(TN+FP) | 140÷(140+20) | 0.875(87.5%) |
| F値 | 2×Precision×Recall÷(Precision+Recall) | 2×0.60×0.75÷(0.60+0.75) | 約0.667 |
- Precision 0.60:不良品と予測した50件(30+20)のうち、本当に不良品だったのは30件
- Recall 0.75:実際の不良品40件(30+10)のうち、見つけられたのは30件。残る10件は見逃し
- 特異度 0.875:実際の良品160件(140+20)のうち、良品と判定できたのは140件
- F値:PrecisionとRecallの調和平均。どちらか一方が低いと、F値も低くなる
PrecisionとRecallは、同じTPを、予測した件数で割るか、実際の件数で割るかの違いです。分母が変わるので、誤検出が多いモデルはPrecisionが下がり、見逃しが多いモデルはRecallが下がります。
正解率だけを見ると間違える例
同じ200件で、「すべて良品」と答えるだけのモデルを考えます。不良品を1件も見つけないので、TP=0、FN=40、FP=0、TN=160です。
- Accuracy:(0+160)÷200=0.80(80%)
- Recall:0÷40=0(不良品を1件も見つけていない)
先ほどのモデルのAccuracyは0.85なので、差は5ポイントしかありません。しかし、Recallは0.75と0で、不良品を見つける力はまったく違います。不良品や病気のように、陽性が少ないデータでは、Accuracyだけで良し悪しを決めてはいけません。scikit-learn公式文書にも、偏りのあるテストデータでは、正解率が見かけ上高くなることがあるという趣旨の説明があります。陽性が少ないデータの評価尺度の設計は、公式チェックリストでは★2つ星の範囲です。
ROC曲線とAUCを8件の例で求める
多くの分類モデルは、「不良品らしさ」のスコアを出し、しきい値以上を陽性と予測します。scikit-learn公式文書では、ROC曲線は、識別のしきい値を変えながら、真陽性率(TPR)と偽陽性率(FPR)をプロットしたものと説明されています。TPRは感度、つまりRecallと同じで、FPRは1から特異度を引いた値です。
ここでは、8件で試します。実際の不良品4件のスコアは0.9・0.8・0.6・0.4、実際の良品4件のスコアは0.7・0.5・0.3・0.2とします。しきい値を0.9から0.2まで下げながら、TPRとFPRを求めます。
| しきい値 | TP(不良品4件中) | FP(良品4件中) | TPR(TP÷4) | FPR(FP÷4) |
|---|---|---|---|---|
| 0.9以上 | 1 | 0 | 0.25 | 0 |
| 0.8以上 | 2 | 0 | 0.50 | 0 |
| 0.7以上 | 2 | 1 | 0.50 | 0.25 |
| 0.6以上 | 3 | 1 | 0.75 | 0.25 |
| 0.5以上 | 3 | 2 | 0.75 | 0.50 |
| 0.4以上 | 4 | 2 | 1.00 | 0.50 |
| 0.3以上 | 4 | 3 | 1.00 | 0.75 |
| 0.2以上 | 4 | 4 | 1.00 | 1.00 |
この8点を結んだ線がROC曲線です。しきい値を下げるほど、不良品を多く見つけられる(TPRが上がる)一方で、良品を不良品と誤る件数(FPR)も増えます。ROC曲線は、見逃しを減らすことと誤検出を増やすことの、取引の関係を1本の線で示します。
scikit-learn公式文書では、AUC(曲線下面積)は、ROC曲線の情報を1つの数値にまとめたものとされています。この例の面積は、FPRが0.25ずつ増える4つの区間の高さ(TPR)が0.5・0.75・1.0・1.0なので、0.25×(0.5+0.75+1.0+1.0)=0.8125です。AUCは、しきい値を1つに決めなくても、モデルの見分ける力を1つの数字で比べるための指標です。なお、実際に使うしきい値は、見逃しと誤検出のどちらが困るかで別に決めます。
DS検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
DS検定で、混同行列とROC曲線はどこまで必要ですか?
公式スキルチェックリスト(data_science.csv)の★1つ星は、ROC曲線とAUCでモデルの精度を評価できること、混同行列(正誤分布のクロス表)とAccuracy・Precision・Recall・F値・特異度を理解して精度を評価できることです。多値分類のmacro平均・micro平均や、不均衡データの評価尺度の設計は★2つ星です。
PrecisionとRecallは、どう覚えればよいですか?
分母で覚えます。Precisionの分母は「陽性と予測した件数(TP+FP)」、Recallの分母は「実際の陽性の件数(TP+FN)」です。見逃しを減らしたいときはRecall、誤検出を減らしたいときはPrecisionを見ます。
特異度とRecallは何が違いますか?
Recallは実際の陽性のうち当てた割合、特異度は実際の陰性のうち当てた割合です。scikit-learn公式文書では、FPR(偽陽性率)は1から特異度(真陰性率)を引いた値とされています。
AUCが大きいほど、よいモデルですか?
AUCは、ROC曲線の下の面積を1つの数値にまとめたものです。しきい値を決めずに、モデル全体の見分ける力を比べる指標として使います。ただし、実際に運用するときは、見逃しと誤検出のどちらを重く見るかでしきい値を決める必要があります。
