了解 F1-Score 如何平衡精确率和召回率以评估机器学习模型。探索如何优化 Ultralytics YOLO26 性能以提高准确性。
F1-Score 是机器学习中一个关键的性能指标,它将精确率(precision)和召回率(recall)结合成一个单一的调和平均值。它在评估数据集不平衡或假阳性(false positives)和假阴性(false negatives)成本不同的分类模型时尤其有用。与在某一类别主导数据集时可能产生误导的简单准确率不同,F1-Score 提供了一个更平衡的视角,来衡量模型正确识别相关实例并最小化错误的能力。通过惩罚极端值,它确保只有当精确率和召回率都相对较高时才能获得高分,使其成为从医学诊断到信息检索等领域的重要指标。
在许多实际场景中,仅仅知道正确预测的百分比(准确率)是不够的。例如,在 异常检测 中,正常情况的数量远远超过异常情况。一个对每个输入都预测为“正常”的模型可能达到 99% 的准确率,但对于检测实际问题却毫无用处。F1-Score 通过平衡两个相互竞争的指标来解决这个问题:
由于通常存在权衡——提高精确率往往会降低召回率,反之亦然——F1-Score 作为一个统一的指标,用于找到最佳平衡点。这在使用 超参数优化 调整模型以确保在不同条件下具有稳健性能时至关重要。
F1-Score 的实用性延伸到各个行业,在这些行业中,错误的成本是巨大的。
现代计算机视觉框架简化了这些指标的计算。在训练目标 detect 模型时,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。

开启您的机器学习未来之旅