曲线下面积 (AUC)
了解曲线下面积 (AUC) 在 ML 模型评估中的重要性。探索它的优势、ROC 曲线的见解和实际应用。
曲线下面积 (AUC) 是用于量化分类模型性能的基本指标、
特别是在
机器学习 (ML) 领域。它衡量的是
模型区分不同类别的能力,例如将正向实例与负向实例区分开来。与
不同的是,AUC 依赖于单一的决策阈值,它能全面反映所有可能阈值的性能。
阈值的性能。这使它成为评估
监督学习算法的重要工具,以确保
模型的预测能力是稳健的,不会受到特定临界点的影响。AUC 值越高
表示模型性能较好,1.0 分代表完美分类。
AUC 与 ROC 之间的关系
AUC 一词具体指的是
接收者工作特征曲线(ROC)下的面积。ROC 曲线是一种说明二元分类系统诊断能力的图形。它绘制了
真阳性率 (TPR)(也称召回率)与
假阳性率 (FPR) 在不同阈值设置下的对比图。
-
真实阳性率:模型有效识别的实际阳性病例比例。
-
假阳性率:实际阴性病例中被错误识别为阳性病例的比例。
阳性。
通过计算 AUC,数据科学家将 ROC 曲线中包含的信息浓缩为一个数字。这
简化了模型评估,使
不同架构之间的比较,例如比较一个
ResNet-50
骨干网与更轻的替代方案进行比较。
解读分数
AUC 分数从 0 到 1 不等,对模型的排名质量提供了概率解释。
-
AUC = 1.0:完美分类器。它能 100% 正确区分正分类和负分类。
的时间。
-
0.5 < AUC < 1.0: The model has a better-than-random chance of classifying instances
correctly. This is the target range for most
predictive modeling tasks.
-
AUC = 0.5:模型没有判别能力,相当于随机猜测(如掷硬币)。
硬币)。
-
AUC < 0.5: This suggests the model is performing worse than random chance, often indicating that
the predictions are inverted or there is a significant issue with the
training data.
要深入了解分类机制,可参考以下资源
Google 机器学习速成班
等资源提供了出色的可视化解释。
实际应用
在假阳性和假阴性的后果差异很大的情况下,AUC 尤为重要。
的情况下尤为重要。
-
医疗诊断:在
人工智能在医疗保健领域的应用
在 X 光或核磁共振扫描中detect 肿瘤等异常情况。高 AUC 分数可确保模型可靠地将恶性病例
恶性病例高于良性病例。这种可靠性对放射科医生使用的临床决策支持系统至关重要。
放射科医生使用的临床决策支持系统至关重要。例如,看到
YOLO11 如何帮助检测肿瘤
凸显了稳健的评估指标在生命攸关的应用中的重要性。
-
金融欺诈检测:金融机构使用
计算机视觉(CV)和模式识别
来标记欺诈交易。由于合法交易远远多于欺诈交易,因此数据非常不平衡。
不平衡。这里首选 AUC,因为它能评估欺诈概率的排序,而不会被大量的合法阴性数据所歪曲。
与原始准确率不同。
准确性。这有助于构建既能最大限度减少客户摩擦
这有助于构建既能最大限度减少客户摩擦,又能维护安全性的系统,而安全性是人工智能在金融领域的核心组成部分。
人工智能在金融领域的应用。
AUC 与其他指标的比较
了解何时使用 AUC 而不是其他指标是成功部署模型的关键。
模型部署的关键。
-
AUC 与准确度: 准确度衡量
预测的正确率。然而,在不平衡的数据集上(例如,99% 的负类),一个模型尽管预测能力为零,却可以通过预测所有事物的 "负 "来达到
99% 的准确率,尽管预测能力为零。AUC
不受类不平衡的影响,因此对于这些问题来说,它是一个更可靠的指标。
-
AUC 与 Precision-Recall 的比较:ROC AUC 同时考虑了 TPR 和 FPR、
精度和
Recall则特别关注阳性类。在这种情况下
假阳性是可以接受的,但假阴性是不能接受的(如疾病初筛),分析
精确度与召回率的权衡
可能比 ROC AUC 更有参考价值。
-
AUC 与mAP 的对比:对于
等模型执行的物体检测任务
YOLO11等模型执行的物体检测任务,标准指标是
mAP
本质上是计算特定交集大于联合(Intersection over Union,IoU)阈值下边界框的精度-召回曲线下的面积。
而 AUC 通常用于计算对象的分类可信度IoU
计算班级概率
要计算 AUC,需要正类的概率分数,而不仅仅是最终的类标签。下面的
下面的示例演示了如何使用一个
图像分类 从
ultralytics 图书馆
from ultralytics import YOLO
# Load a pre-trained YOLO11 classification model
model = YOLO("yolo11n-cls.pt")
# Run inference on an image
results = model("path/to/image.jpg")
# Access the probability scores for all classes
# These scores are the inputs needed to calculate AUC against ground truth
probs = results[0].probs.data
print(f"Class Probabilities: {probs}")
获得数据集的概率后,您可以使用标准库,如
Scikit-learn等标准库
计算最终的 AUC 分数。