Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Area Under the Curve (AUC)

AUC 将 ROC 曲线转化为一个 0 到 1 之间的分数:分类器将随机正样本排在随机负样本之前的概率。本文介绍 ROC AUC 与 PR AUC,并提供代码。

曲线下面积(AUC)是一种指标,用于概括二分类器在所有可能决策阈值下区分两个类别的能力。在机器学习中,AUC 几乎总是指受试者工作特征(ROC)曲线下面积,也写作 ROC AUC 或 AUROC。它的数值等于模型给随机选取的正样本打分高于随机选取的负样本的概率。AUC 为 1.0 表示每个正样本的得分都高于每个负样本;0.5 表示排序效果不比随机猜测好;低于 0.5 则表示排序颠倒。由于 AUC 只取决于分数的排序,因此在有人选择阈值之前就能评估模型,这使它成为医学诊断模型、信用评分和欺诈检测中的标准指标。

AUC 的计算方式#

ROC 曲线以真正率(即召回率)为纵轴,以假正率(被错误标记的负样本比例)为横轴;随着决策阈值从最高分逐渐降到最低分,曲线也随之变化。高于所有分数的阈值不会标记任何样本,点位于 (0, 0);低于所有分数的阈值会标记所有样本,点位于 (1, 1)。AUC 是连接所有中间点的曲线下面积,通常用梯形法则计算。

通过统计样本对,也能得到相同的数值。将每个正样本与每个负样本进行比较:如果正样本排名更高,则该对计 1 分;并列计 0.5 分;否则计 0 分。所得分数正好等于 ROC AUC;统计学家称之为归一化的 Mann-Whitney U 统计量,医学研究人员则称之为一致性统计量或 c 统计量。信用风险团队常报告基尼系数,其计算方式为 2 × AUC − 1。

成对比较的视角有助于理解 AUC 的主要特性。任何保留分数顺序的变换(例如对概率进行平方,或对二分类器的 logits 应用温度缩放)都不会改变 AUC,因此模型即使 AUC 极佳,概率校准也可能很差。校准需要使用布里尔分数等单独指标评估。

不平衡数据上的 ROC AUC 与 PR AUC#

ROC AUC 不受类别比例影响,因为真正率只根据正样本计算,假正率只根据负样本计算。当正样本罕见时,这一特性会成为缺点。假设 100 个样本中只有 1 个正样本,那么 5% 的假正率意味着每个真实正样本对应约五个误报,但 ROC 曲线几乎不会因此受到影响。精确率-召回率曲线(PR 曲线)下面积,即通常用平均精确率(AP)概括的 PR AUC,以精确率为纵轴、召回率为横轴,能直接体现这些误报,因此在类别不平衡的数据上,它比 ROC 曲线更有信息量。下面的 scikit-learn 脚本会用两种方式评估同一个模型:

from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import average_precision_score, roc_auc_score
from sklearn.model_selection import train_test_split

# Imbalanced binary problem: 1 positive per 100 samples
X, y = make_classification(n_samples=20_000, weights=[0.99], flip_y=0, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, stratify=y, random_state=0)

# Score the test set with a simple classifier
model = LogisticRegression(max_iter=1000).fit(X_train, y_train)
scores = model.predict_proba(X_test)[:, 1]

# The same scores summarized by the areas under two different curves
print(f"Positives in test set: {y_test.sum()} of {len(y_test)}")
print(f"ROC AUC: {roc_auc_score(y_test, scores):.3f}")
print(f"PR AUC (average precision): {average_precision_score(y_test, scores):.3f}")

在 10,000 个测试样本中有 100 个正样本时,该模型的 ROC AUC 达到 0.911,但平均精确率只有 0.462。这两个数值的基准值也不同:无论类别平衡情况如何,随机排序的 ROC AUC 都是 0.5;而其平均精确率等于正样本比例,在此例中为 0.01。

多分类 AUC 与目标检测#

ROC AUC 是针对二分类定义的。对于更多类别,scikit-learn 的 roc_auc_score会计算一对多 AUC 的平均值(将每个类别与其他所有类别进行比较),或计算所有类别对的一对一 AUC,并采用宏平均或按类别比例加权的平均方式。

目标检测无法使用 ROC 曲线,因为负样本是所有不包含目标的边界框位置,其集合实际上没有界限,也无法定义有意义的假正率。检测指标改用精确率-召回率曲线下面积。Ultralytics 中的 YOLO26验证会计算每个类别的平均精确率,即其精确率-召回率包络线下面积;与 COCO评估方式相同,它会在 101 个召回率点上采样,并将这些面积取平均,得到平均精度均值(mAP),计算时使用从 0.50 到 0.95 的 IoU阈值。

  • 准确率:衡量单个阈值下的正确预测比例;在类别不平衡的数据上,即使漏掉所有正样本,准确率看起来也可能很高。AUC 衡量所有阈值下的排序表现。
  • F1 分数:在单个阈值下综合精确率和召回率,因此衡量的是一个工作点;AUC 则概括所有工作点的表现。
  • 混淆矩阵:统计单个阈值下的真正例、假正例、真负例和假负例。每个 ROC 点都会用一对比率概括一个混淆矩阵。
  • 平均精确率:精确率-召回率曲线下面积;正样本罕见时通常用它来概括表现,也是 mAP 的主要组成部分。
  • 部分 AUC:限定假正率范围(例如 0 到 0.1)内的曲线下面积;当只允许较低误报率时会使用这一指标,例如在大规模筛查项目中,每次误报都会触发后续检查。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来