什么是 F1 分数(F1 Score)?

F1 分数(F1 Score)是在指定决策阈值与正类定义下,精确率和召回率的调和平均,只有两项指标都较高时才会取得高值。

快速了解

规范文档官方规范

工作原理

错误优先级不同时使用 F-beta

F-beta 家族公式为 (1+beta^2)PR/(beta^2 P+R)。Beta 大于一时更重视召回率,小于一时更重视精确率。van Rijsbergen 的信息检索论述从用户对 Recall 与 Precision 的明确偏好推导复合效果指标。Beta 只表达相对侧重,不是完整业务成本模型;操作阈值仍要依据显式效用与约束选择。

声明正类、阈值与零值策略

F1 属于某个阈值产生的硬分类结果。如果 TP、FP、FN 全部为零,分母为零,指标没有定义。不同库可能告警、返回零、返回一或在平均时忽略该类。当前 scikit-learn API显式暴露标签选择、平均方式、Beta、Support 和 zero_division 行为,评测契约也应记录这些选项。

不要过早压缩多分类行为

Binary F1 只评估一个已声明正类;Macro-F1 先逐类计算再等权平均,Weighted-F1 按真实类别支持度加权,Micro-F1 则先聚合 TP、FP、FN。对单标签多分类任务,Micro-F1 等于 Accuracy,仍可能掩盖少数类失败。选择聚合值前,应先检查逐类分数与混淆矩阵。

主要特点

  • 通过调和平均组合精确率与召回率
  • 使用真正例、假正例和假负例,但忽略真负例
  • 依赖正类定义和一个具体决策阈值
  • 可扩展为对两项指标赋予不同侧重的 F-beta
  • 分母为零时需要明确处理策略
  • 具有 Binary、Macro、Micro、Weighted 和 Samples 等不同聚合语义

常见用途

  1. 误报与漏报都重要时汇总正类检测表现
  2. 在冻结标签集上比较文本或实体分类器
  3. 对称错误目标明确时在验证集选择阈值
  4. 每个已声明类别都应影响模型选择时报告 Macro-F1
  5. 在保留精确率、召回率、支持度与切片的前提下监控回归

示例

loading...
Loading code...

常见问题

F1 分数如何计算?

F1 为 `2 * Precision * Recall / (Precision + Recall)`,也可写成 `2TP/(2TP+FP+FN)`。在相关分母有定义时两种形式相同;结果必须同时声明正类、阈值、原始计数与零分母策略。

F1 为什么使用调和平均?

调和平均会被较小的分量明显拉低,因此高精确率不能完全抵消极低召回率,反之亦然。它提供紧凑的平衡分数,但并不能证明两类错误在业务中的成本刚好相等。

F1 与 F-beta 有什么区别?

F1 令 Beta 等于一,对精确率和召回率给予对称侧重;F-beta 中 Beta 大于一偏向召回率,小于一偏向精确率。Beta 应由决策目标确定,并随结果公开,不能隐藏在笼统分数里。

为什么很高的 F1 仍可能误导?

F1 忽略真负例,并把两个错误维度压缩成一个数。分类器可能在负类、关键子群、校准或运营负担上表现很差,却仍保持高 F1。应继续检查混淆计数、逐类指标、切片和实际成本。

Macro-F1 和 Micro-F1 有什么区别?

Macro-F1 逐类计算 F1 后等权平均;Micro-F1 先跨类别聚合 TP、FP 与 FN。对单标签多分类任务,Micro-F1 等于准确率,而 Macro-F1 让稀有类别与常见类别拥有相同影响。

相关术语

相关文章