什么是 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 等不同聚合语义
常见用途
- 误报与漏报都重要时汇总正类检测表现
- 在冻结标签集上比较文本或实体分类器
- 对称错误目标明确时在验证集选择阈值
- 每个已声明类别都应影响模型选择时报告 Macro-F1
- 在保留精确率、召回率、支持度与切片的前提下监控回归
示例
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 让稀有类别与常见类别拥有相同影响。