機械学習の具体的手法
G検定の混同行列(正解率・適合率・再現率・F値の計算)
G検定のシラバスには「モデルの選択・評価」があります。このページは、その学習で使う混同行列と、そこから出る正解率、適合率、再現率、F値を整理します。4つの指標は、混同行列の4つの数(TP・FP・FN・TN)の組み合わせ方が違うだけです。
このページは、1000通のメールの迷惑メール判定という架空の例で、4つの指標を順に計算します。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 正解率は (TP + TN) ÷ 全体。陽性と陰性の数が大きく偏ると、高く見えやすい
- 適合率は TP ÷ (TP + FP)。陽性と予測したもののうち、本当に陽性だった割合
- 再現率は TP ÷ (TP + FN)。本当の陽性のうち、見つけられた割合
- F値は適合率と再現率の調和平均。F1では2つを同じ重みで扱う
- 誤検出を避けたいなら適合率、見逃しを避けたいなら再現率を見る
混同行列の4マス
混同行列は、実際のクラスと予測したクラスの組み合わせごとに件数を数えた表です。scikit-learnの公式ドキュメントでは、行が実際のクラス、列が予測したクラスで、i行j列の値は「実際はiだが、jと予測した」件数です。資料によって向きが逆のこともあります。
計算例です(このページの架空のデータです)。1000通のメールのうち、実際の迷惑メールが50通、そうでないメールが950通あります。迷惑メールを「陽性」として、判定の結果を数えました。
| マス | 意味 | 件数 |
|---|---|---|
| TP(真陽性) | 実際に陽性で、陽性と予測した | 40 |
| FN(偽陰性) | 実際に陽性なのに、陰性と予測した(見逃し) | 10 |
| FP(偽陽性) | 実際は陰性なのに、陽性と予測した(誤検出) | 20 |
| TN(真陰性) | 実際に陰性で、陰性と予測した | 930 |
一次資料: JDLA「G検定」、scikit-learn公式ドキュメント「Metrics and scoring」。用語は混同行列の用語集にあります。
1つの表から4つの指標を計算
scikit-learnの公式ドキュメントは、適合率をTP÷(TP+FP)、再現率をTP÷(TP+FN)と定義し、F値を適合率と再現率の重み付き調和平均と説明しています。上の表の数字で計算します。
| 指標 | 式 | 計算 | 値 |
|---|---|---|---|
| 正解率 | (TP + TN) ÷ 全体 | (40 + 930) ÷ 1000 | 0.97 |
| 適合率 | TP ÷ (TP + FP) | 40 ÷ (40 + 20) | 約0.667 |
| 再現率 | TP ÷ (TP + FN) | 40 ÷ (40 + 10) | 0.8 |
| F値(F1) | 2TP ÷ (2TP + FP + FN) | 80 ÷ (80 + 20 + 10) | 約0.727 |
同じ判定結果でも、正解率は0.97と高く、再現率は0.8、適合率は約0.667です。F1は、適合率と再現率の調和平均で、2×0.667×0.8÷(0.667+0.8)≒0.727になります。式を変形したTP中心の形(2TP÷(2TP+FP+FN))でも同じ値です。
正解率だけでは足りない場面
scikit-learnの公式の例は、適合率と再現率が、クラスが非常に不均衡なときの予測の成功を測る有用な指標だと述べています。
先の例で確かめます。どのメールも「迷惑メールではない」と予測する判定器は、950通を当てて正解率が0.95になります。しかし迷惑メール50通を1通も見つけられず、再現率は0です。正解率0.95でも、見つけたい陽性を1件も見つけていないことがあります。陽性が少ないデータでは、正解率に加えて、再現率や適合率を確認します。
適合率と再現率の使い分け
scikit-learnは、適合率を「陰性のものを陽性とラベル付けしない能力」、再現率を「陽性のものをすべて見つける能力」と説明しています。どちらを重く見るかは、間違いの重さで決まります。
- 誤検出(FP)の被害が大きい場面は、適合率を重く見る。例: 普通のメールを迷惑メールに入れて、大事な連絡を見逃させたくない
- 見逃し(FN)の被害が大きい場面は、再現率を重く見る。例: 病気の疑いのある人を、検査で取りこぼしたくない
- 両方を1つの数で見たいときは、F値を使う
2つの違いを並べた説明は適合率と再現率を比べたページに、しきい値を動かして見る曲線の違いはROC曲線とPR曲線を比べたページにあります。
3クラス以上のときの平均の取り方
クラスが3つ以上あるときは、クラスごとに適合率・再現率・F値を出し、それを平均して1つの値にまとめます。scikit-learnの公式ドキュメントは、マクロ平均のF値を、クラスごとのF値の算術平均として計算すると説明しています。適合率と再現率の平均から調和平均を取る計算とは、同じ値になりません。
同じドキュメントは、すべてのラベルを含めた多クラスのマイクロ平均では、適合率、再現率、F値がすべて正解率と同じ値になると述べています。平均の取り方(マクロ・マイクロ)が問題文に書かれているときは、どちらの平均かを先に確認します。
問題文から読み取る
このページの計算例から導いた読み方です。出題を予想するものではありません。
- 「陽性と予測したもののうち、実際に陽性だった割合」とあれば、適合率
- 「実際の陽性のうち、正しく検出できた割合」とあれば、再現率
- 「見逃しを減らしたい」とあれば、再現率を上げる方向
- 「誤検出を減らしたい」とあれば、適合率を上げる方向
- 「陽性が全体の5%のデータで正解率が95%なので、性能が高い」という文は、先の計算例のとおり成り立たない
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
混同行列や適合率・再現率は、G検定のシラバスにありますか?
JDLAのG検定ページは、試験範囲の技術分野に「モデルの選択・評価」と「誤差関数」を挙げています。混同行列と各指標は、このページでは「モデルの選択・評価」に関わる内容として整理しています。
再現率は感度と同じですか?
scikit-learnの公式ドキュメントは、再現率を感度とも呼ぶと説明しています。式は TP ÷ (TP + FN) です。
F値は、適合率と再現率の平均ですか?
適合率と再現率の調和平均です。F1は2つを同じ重みで扱い、このページの例では適合率約0.667と再現率0.8から約0.727になります。単純な算術平均の約0.733とは一致しません。
混同行列の行と列は、どちらが実際の値ですか?
資料によって向きが違います。scikit-learnは行を実際のクラス、列を予測したクラスとしており、ほかの資料は逆のこともあります。問題では、ラベルの書かれた向きをまず確認します。
