F1-Score
了解 F1-Score 如何平衡精确率和召回率以评估机器学习模型。发现如何优化 Ultralytics YOLO26 性能以获得更好的准确性。
F1-Score 是机器学习中一项至关重要的性能指标,它将精确率(precision)和召回率(recall)合并为一个单一的调和平均数。它在评估数据集不平衡,或假阳性(false positives)和假阴性(false negatives)带来不同成本的分类模型时特别有用。与简单的准确率(accuracy)不同——如果某一类在数据集中占主导地位,准确率可能会产生误导——F1-Score 能更平衡地反映模型在识别相关实例并尽量减少错误方面的能力。通过对极端值进行惩罚,它确保只有当精确率和召回率都相当高时,才能获得高分,这使其成为从医学诊断到信息检索等领域中的标准指标。
为什么 F1-Score 在机器学习中很重要#
在许多现实场景中,仅仅知道正确预测的百分比(准确率)是不够的。例如,在异常检测中,正常案例远多于异常。一个对每个输入都预测“正常”的模型可能会达到 99% 的准确率,但对于检测实际问题却毫无用处。F1-Score 通过平衡两个相互竞争的指标来解决这个问题:
- Precision:这衡量了正向预测的质量。它回答了这样一个问题:“在模型标记为正类的所有实例中,实际上有多少是正类?”
- Recall:这衡量了正向预测的数量。它回答了:“在所有实际的正向实例中,模型正确识别出了多少?”
由于通常存在权衡——提高精确率往往会降低召回率,反之亦然——因此 F1-Score 作为一个统一的指标来寻找最佳平衡点。在使用超参数优化微调模型时,这一点至关重要,可确保在各种不同条件下获得稳健的性能。
实际应用#
F1-Score 的实用性延伸到了错误成本巨大的各个行业。
- 医疗诊断:在医疗健康领域的 AI 中,特别是针对肿瘤检测等任务,假阴性(漏掉肿瘤)会危及生命,而假阳性(标记良性组织)会导致不必要的焦虑。F1-Score 帮助研究人员优化像 YOLO26 这样的模型,以确保系统足够敏感,能够捕捉疾病,而不会用误报让医生应接不暇。
- 信息检索与搜索:搜索引擎和文档分类系统使用 F1-Score 来评估相关性。用户希望看到所有相关的文档(高召回率),但不想翻阅不相关的结果(高精确率)。高 F1-Score 表明引擎能有效地检索到正确的信息且没有冗余。
- 垃圾邮件过滤:电子邮件服务使用文本分类来隔离垃圾邮件。系统必须捕获垃圾邮件(召回率),但最重要的是不能将重要的工作邮件标记为垃圾邮件(精确率)。F1-Score 是这些过滤器的主要基准。
使用 Ultralytics 计算 F1-Score#
现代计算机视觉框架简化了这些指标的计算。在训练目标检测模型时,F1-Score 会在验证阶段自动计算。Ultralytics Platform 在实时图表中可视化这些指标,允许用户查看 F1-Score 随不同置信度阈值变化的曲线。
以下是你如何使用 Python API 获取包括 F1-Score 各组件在内的验证指标的方法:
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Validate the model on a dataset (metrics are computed automatically)
# This returns a validator object containing precision, recall, and mAP
metrics = model.val(data="coco8.yaml")
# Print the Mean Average Precision (mAP50-95), which correlates with F1 performance
print(f"mAP50-95: {metrics.box.map}")
# Access precision and recall arrays to manually inspect the balance
print(f"Precision: {metrics.box.p}")
print(f"Recall: {metrics.box.r}")F1-Score 与相关指标的比较#
了解 F1-Score 与其他评估标准的区别对于为你项目选择正确的工具至关重要。
- 与准确率的区别:准确率同等对待所有错误。F1-Score 对于不平衡数据集更具优势,因为它侧重于正类(感兴趣的少数类)的性能。
- 与 mAP 的关系:平均精度均值 (mAP) 是跨所有置信度阈值比较目标检测模型标准。然而,F1-Score 通常用于确定部署的最佳置信度阈值。你可以选择 F1 曲线达到峰值的阈值来部署你的应用程序。
- 混淆矩阵:混淆矩阵提供了原始计数(真正例、假正例等),F1-Score 正是从中派生出来的。虽然混淆矩阵提供了详细的粒度,但 F1-Score 提供了用于快速比较的单个汇总统计数据。
- ROC-AUC:曲线下面积 (AUC) 衡量跨所有阈值的可分性。当你具有高度倾斜的类分布(例如欺诈率很低的欺诈检测)时,F1-Score 通常比 ROC-AUC 更受青睐。
提高你的 F1-Score#
如果你的模型遭遇低 F1-Score 的困扰,几种策略可以提供帮助。数据增强可以增加正样本的多样性,帮助模型更好地泛化。采用来自强大的基础模型的迁移学习使网络能够利用预先学习的特征。此外,在推理过程中调整置信度阈值可以手动转变精确率和召回率之间的平衡,以针对你的特定用例最大化 F1-Score。






