F1-Score
了解 F1-Score 如何平衡精确率和召回率以评估机器学习模型。发现如何优化 Ultralytics YOLO26 性能以获得更好的准确性。
F1-Score 是机器学习中一项至关重要的性能指标,它将精确率(precision)和召回率(recall)合并为一个单一的调和平均数。它在评估数据集不平衡,或假阳性(false positives)和假阴性(false negatives)带来不同成本的分类模型时特别有用。与简单的准确率(accuracy)不同——如果某一类在数据集中占主导地位,准确率可能会产生误导——F1-Score 能更平衡地反映模型在识别相关实例并尽量减少错误方面的能力。通过对极端值进行惩罚,它确保只有当精确率和召回率都相当高时,才能获得高分,这使其成为从医学诊断到信息检索等领域中的标准指标。
Link to this section为什么 F1-Score 在机器学习中很重要#
在许多实际场景中,仅知道正确预测的百分比(准确率)是不够的。例如,在 异常检测 中,正常案例的数量远多于异常案例。一个对每个输入都预测为“正常”的模型可能达到 99% 的准确率,但在检测实际问题时却毫无用处。F1-Score 通过平衡两个相互竞争的指标解决了这个问题:
由于往往存在权衡——提高精确率通常会降低召回率,反之亦然——F1-Score 作为一种统一的指标,可以找到最佳平衡点。这在使用 超参数优化 调整模型以确保在各种条件下实现稳健性能时至关重要。
Link to this section实际应用#
F1-Score 的实用性延伸到了错误成本巨大的各个行业。
- Medical Diagnostics: In AI in healthcare, specifically for tasks like tumor detection, a false negative (missing a tumor) is life-threatening, while a false positive (flagging benign tissue) causes unnecessary anxiety. The F1-Score helps researchers optimize models like YOLO26 to ensure that the system is sensitive enough to catch diseases without overwhelming doctors with false alarms.
- 信息检索与搜索:搜索引擎和文档分类系统使用 F1-Score 来评估相关性。用户希望看到所有相关的文档(高召回率),但不想翻阅不相关的结果(高精确率)。高 F1-Score 表明引擎能有效地检索到正确的信息且没有冗余。
- Spam Filtering: Email services use text classification to segregate spam. The system must catch spam emails (recall) but crucially must not label important work emails as junk (precision). The F1-Score serves as the primary benchmark for these filters.
Link to this section使用 Ultralytics 计算 F1-Score#
现代计算机视觉框架简化了这些指标的计算。在训练目标检测模型时,F1-Score 会在验证阶段自动计算。Ultralytics 平台 会实时以图表形式可视化这些指标,让用户能够看到 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}")Link to this sectionF1-Score 与相关指标的比较#
了解 F1-Score 与其他评估标准的区别对于为你项目选择正确的工具至关重要。
- 与准确率的区别:准确率 将所有错误同等对待。对于 不平衡数据集,F1-Score 表现更优,因为它专注于阳性类(感兴趣的少数类)的性能。
- 与 mAP 的关系:平均精度均值 (mAP) 是比较所有置信度阈值下的目标检测模型的标准。然而,F1-Score 常被用来确定部署时的 最佳置信度阈值。你可以选择 F1 曲线达到峰值的阈值来部署你的应用程序。
- 混淆矩阵:混淆矩阵 提供了计算 F1-Score 所需的原始计数(真阳性、假阳性等)。虽然矩阵提供了细粒度的细节,但 F1-Score 提供了一个单一的汇总统计数据,便于快速比较。
- ROC-AUC:曲线下面积 (AUC) 衡量的是跨所有阈值的可分性。当你遇到高度倾斜的类分布(例如欺诈检测中欺诈行为非常罕见)时,F1-Score 通常优于 ROC-AUC。
Link to this section提高你的 F1-Score#
如果你的模型 F1-Score 较低,几种策略可以提供帮助。数据增强 可以增加阳性样本的多样性,帮助模型更好地泛化。采用从强大的基础模型进行的 迁移学习 允许网络利用预先学习到的特征。此外,在推理过程中调整 置信度阈值 可以手动改变精确率和召回率之间的平衡,从而为你特定的使用场景最大化 F1-Score。






