機械学習の具体的手法
G検定のROC曲線とAUC(しきい値を動かした計算例)
G検定のシラバスには「モデルの選択・評価」があります。このページは、その学習で使うROC曲線とAUCを、10件のデータの計算例で整理します。ROC曲線は、判定のしきい値を動かして得た「偽陽性率と真陽性率の組」を結んだ線、AUCはその線の下の面積です。
このページの10件は架空のデータです。陽性5件と陰性5件に、モデルが出したスコアが付いていると考えて、点を1つずつ求めます。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- ROC曲線は、縦軸が真陽性率(再現率と同じ)、横軸が偽陽性率
- しきい値を下げると、陽性と予測する件数が増え、点は右上に動く
- 左上の角が理想の点。AUCは曲線の下の面積で、大きいほど良い傾向
- 左下から右上への対角線はAUC 0.5で、当てずっぽうと同じ水準
- 陽性が非常に少ないデータでは、適合率と再現率の曲線も併せて見る
しきい値を動かして点を取る
分類モデルは、多くの場合、陽性らしさを表すスコアを出します。そのスコアが「しきい値以上なら陽性」と決めて、はじめて陽性・陰性の判定になります。scikit-learnのroc_curveの説明でも、偽陽性率と真陽性率は「スコアがしきい値以上」の予測に対して求められます。
| 実際 | モデルのスコア(5件) |
|---|---|
| 陽性 | 0.9 / 0.8 / 0.6 / 0.4 / 0.3 |
| 陰性 | 0.7 / 0.5 / 0.35 / 0.2 / 0.1 |
しきい値を0.9から0.1まで下げながら、陽性と予測した件数を数えます。真陽性率は 陽性5件のうち見つけた割合(TP÷5)、偽陽性率は 陰性5件のうち誤って陽性と予測した割合(FP÷5)です。
| しきい値 | TP | FP | 真陽性率 | 偽陽性率 |
|---|---|---|---|---|
| 0.9 | 1 | 0 | 0.2 | 0 |
| 0.8 | 2 | 0 | 0.4 | 0 |
| 0.7 | 2 | 1 | 0.4 | 0.2 |
| 0.6 | 3 | 1 | 0.6 | 0.2 |
| 0.5 | 3 | 2 | 0.6 | 0.4 |
| 0.4 | 4 | 2 | 0.8 | 0.4 |
| 0.35 | 4 | 3 | 0.8 | 0.6 |
| 0.3 | 5 | 3 | 1.0 | 0.6 |
| 0.2 | 5 | 4 | 1.0 | 0.8 |
| 0.1 | 5 | 5 | 1.0 | 1.0 |
しきい値を下げると、TPもFPも減ることはなく、増えるか同じままです。そのため点は、左下(0, 0)から右上(1, 1)へ向かって動きます。混同行列から各指標を出す手順は混同行列のページにあります。
点を結んで曲線にする
表の10個の点を、横軸を偽陽性率、縦軸を真陽性率としてプロットし、左下から順に結んだものがROC曲線です。scikit-learnの公式の例も、ROC曲線は縦軸に真陽性率、横軸に偽陽性率を取ると説明しています。
この例では、偽陽性率が0のまま真陽性率が0.4まで上がり(しきい値0.9→0.8)、そのあとは、真陽性率が上がる動きと偽陽性率が上がる動きが交互に進みます。左上に近い所を通るほど、誤検出を増やさずに陽性を見つけられているモデルです。
AUCの値の読み方
AUCは、ROC曲線の下の面積です。上の10個の点から、偽陽性率が動いた区間ごとに「幅0.2×その区間の真陽性率」を足し合わせます。
| 偽陽性率の区間 | その区間の真陽性率 | 面積(幅0.2×真陽性率) |
|---|---|---|
| 0 → 0.2 | 0.4 | 0.08 |
| 0.2 → 0.4 | 0.6 | 0.12 |
| 0.4 → 0.6 | 0.8 | 0.16 |
| 0.6 → 0.8 | 1.0 | 0.20 |
| 0.8 → 1.0 | 1.0 | 0.20 |
合計は 0.08 + 0.12 + 0.16 + 0.20 + 0.20 = 0.76 で、この例のAUCは0.76です。別の数え方でも確かめられます。陽性5件と陰性5件の組は25通りあり、陽性のスコアのほうが高い組は、0.9と0.8が各5組、0.6が4組、0.4が3組、0.3が2組の合計19組です。19÷25=0.76で、面積と一致します。
- 理想の点は左上(偽陽性率0・真陽性率1)で、その点を通る曲線のAUCは1になる
- 左下から右上への対角線の下の面積は0.5で、陽性と陰性を見分けられない水準
- scikit-learnの公式の例は、現実にはほとんどないものの、AUCが大きいほうが通常は良いと述べている
- 曲線の立ち上がりの急さも重要で、真陽性率を最大に、偽陽性率を最小にするのが理想と述べている
陽性が少ないデータでの注意
偽陽性率は「陰性全体のうち誤って陽性と予測した割合」なので、陰性が非常に多いと、誤検出の件数が増えても偽陽性率は小さいままになります。scikit-learnの公式の適合率・再現率の例は、適合率と再現率が、クラスが非常に不均衡なときの予測の成功を測る有用な指標だと述べています。
陽性がごく少ないデータでは、ROC曲線だけでなく、適合率と再現率の曲線も見ます。2つの曲線の違いはROC曲線とPR曲線を比べたページに整理しています。
問題文から読み取る
このページの計算例から導いた読み方です。出題を予想するものではありません。
- 「しきい値を変えながら、真陽性率と偽陽性率の関係を描いた」とあれば、ROC曲線
- 「曲線の下側の面積」とあれば、AUC
- 「しきい値を下げると、真陽性率も偽陽性率も上がる(または同じ)」は成り立つ
- 「AUCが0.5に近い」とあれば、見分ける力が乏しい状態
- 「曲線が左上の角に近い」とあれば、性能が高い方向
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
ROC曲線やAUCは、G検定のシラバスにありますか?
JDLAのG検定ページは、試験範囲の技術分野に「モデルの選択・評価」を挙げています。ROC曲線とAUCは、このページでは「モデルの選択・評価」に関わる内容として整理しています。
ROC曲線の縦軸と横軸は何ですか?
scikit-learnの公式の例は、縦軸に真陽性率、横軸に偽陽性率を取ると説明しています。真陽性率は再現率と同じ式の TP ÷ (TP + FN)、偽陽性率は FP ÷ (FP + TN) です。
AUCが0.5だと、どういう状態ですか?
ROC曲線が左下から右上への対角線になる状態で、曲線の下の面積が0.5です。陽性と陰性を見分ける力がなく、当てずっぽうと同じ水準を示します。
AUCが1に近ければ、必ず良いモデルですか?
良いモデルの目安にはなりますが、陽性が非常に少ないデータでは、適合率と再現率の曲線も併せて見ます。scikit-learnの公式の適合率・再現率の例は、適合率と再現率が、クラスが非常に不均衡なときの予測の成功を測る有用な指標だと述べています。
