Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Receiver Operating Characteristic (ROC) Curve

受信者動作特性(ROC)曲線は、すべての閾値における真陽性率と偽陽性率をプロットしたものです。読み方、AUC、コードを解説します。

受信者動作特性(ROC)曲線は、2クラス分類器があらゆる判定しきい値で2つのクラスをどれほど適切に分離できるかを示すグラフです。縦軸に真陽性率、横軸に偽陽性率を取り、モデルのスコアに適用するしきい値ごとに1つの点を描くため、陽性の検出と誤警報の発生とのトレードオフを1つの図で示せます。その面積である曲線下面積(AUC)は、この図をしきい値に依存しない1つの数値に集約します。この名称は第二次世界大戦中のレーダー工学に由来し、レーダーの受信担当者が敵機をノイズからどれほど識別できるかを測るために使われていました。その後、この手法は医学、心理学、機械学習(ML)にも広まりました。

ROC曲線の作成方法#

曲線上の各点は、ある1つのしきい値で計算した混同行列から得られます。

  • 真陽性率(TPR)。再現率または感度とも呼びます: TP / (TP + FN)。実際に陽性であるサンプルのうち、モデルが陽性と判定した割合です。
  • 偽陽性率(FPR): FP / (FP + TN)。実際に陰性であるサンプルのうち、誤って陽性と判定された割合です。FPRは1から特異度を引いた値です。

しきい値を高い値から低い値へ動かすと、何も陽性と判定しない点(0, 0)から、すべてを陽性と判定する点(1, 1)まで曲線が描かれます。すべての陽性をすべての陰性より上位に順位付けする分類器は左上隅を通り、ランダムに推測するモデルは対角線に沿います。対角線より下の曲線は、スコアが逆転していることを示します。AUCは、無作為に選んだ陽性サンプルが、無作為に選んだ陰性サンプルより高いスコアを得る確率に等しいため、0.5は偶然と同等、1.0は完全な分離を意味します。曲線の作成には、予測確率や信頼度などの連続スコアが必要です。0/1の二値ラベルでは1つの点しか得られません。次の例では、不均衡データセットでロジスティック回帰分類器を学習し、scikit-learnのroc_curveを使って曲線を計算します。

import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, roc_curve
from sklearn.model_selection import train_test_split

# Binary task where 10% of samples are positive
X, y = make_classification(n_samples=5000, weights=[0.9], class_sep=0.8, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)

# ROC analysis needs continuous scores, not hard 0/1 predictions
scores = LogisticRegression().fit(X_train, y_train).predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, scores)
print(f"AUC: {roc_auc_score(y_test, scores):.3f}")

# Each threshold is one point on the curve: higher recall costs more false alarms
for target in (0.80, 0.95):
    i = np.argmax(tpr >= target)  # first point that reaches the target TPR
    print(f"Threshold {thresholds[i]:.2f}: TPR {tpr[i]:.2f}, FPR {fpr[i]:.2f}")

モデルのAUCは0.963です。しきい値0.44では陽性の82%をFPR 0.01で検出しますが、再現率95%を達成するにはしきい値を0.02に下げる必要があり、その場合FPRは0.26に上昇します。陽性130件、陰性1,120件のこのテストデータ分割では、陽性をさらに18件検出するために、誤警報が279件増えます。

運用点の選択#

曲線は各しきい値に伴うコストを示し、どのコストを許容するかはアプリケーションによって決まります。

  • 医学的スクリーニング:腫瘍の見落としは追加検査よりはるかに重大なため、スクリーニングツールではTPRの高い点で運用し、放射線科医が確認する偽陽性の増加を許容します。
  • 不正検出:正当な支払いがブロックされるたびに顧客の不満につながるため、銀行は不正の大半を検出しつつ、審査チームと顧客が許容できる水準にFPRを抑える点を選びます。
  • コストが同じ場合:両方の誤りのコストが同じなら、YoudenのJ統計量(TPRからFPRを引いた値)によって、対角線から最も離れた点を選びます。

Ultralytics YOLO26の分類モデルは、ROC分析に必要な連続スコアとして、results[0].probs.data内で各クラスの確率を返します。そのため、ラベル付き検証データセットから1つのクラスの確率を集めれば、そのクラスの1対他のROC曲線を作成し、デプロイ時のコストに合わせたしきい値を選択できます。

適合率-再現率曲線では、TPRとFPRではなく適合率と再現率をプロットします。TPRとFPRはそれぞれクラス内で計算されるため、陽性の割合が下がってもROC曲線は変わりませんが、適合率は低下します。不正検査や異常検知のように陽性がまれな場合、FPRが低くても真の検出より誤警報の方が多くなる可能性があります。不均衡データセットに関するPLOS ONEの研究では、そのような状況では適合率-再現率プロットの方が情報量が多いことが示されました。物体検出が適合率-再現率曲線と平均適合率(mAP)で評価されるのも、関連する理由によります。真陰性に数えられる背景領域に上限がないため、FPRの分母が一定にならないからです。

  • 精度とF1スコア:どちらも1つのしきい値で測定する単一の数値です。一方、ROC曲線とそのAUCは、すべてのしきい値を要約します。
  • 多クラスの画像分類:各クラスについて1対他のROC曲線を作成し、クラスごとのAUCをマクロ平均または有病率で重み付けしたスコアに平均します。scikit-learnのroc_auc_scoreでは、multi_class="ovr"を使って計算できます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう