F1和准确率
准确度和召回率

TP(True Positive)——“该抓的抓对了”
- 真实是正类
- 模型也预测为正类
TN(True Negative)——“本来就不是,我也没说是”
- 真实是负类
- 模型预测为负类
FP(False Positive)——“乱说有” - 真实不是
- 模型却说是
FN(False Negative)——“该抓的没抓到” - 真实是
- 模型却没预测
1️⃣ 准确率(Accuracy)
-
定义:预测正确样本数 / 验证集总样本数
-
公式(单标签分类):
![image]()
-
优点:直观、容易理解
-
缺点:
- 对多标签任务或类别不平衡任务不敏感
- 例如一个标签很少出现,如果模型全预测负样本,accuracy 也可能很高,但模型根本没学到少数类
2️⃣ 多标签任务为什么用 F1-score
多标签任务特点
-
每个样本可以有多个标签
- 例:一句话可以同时属于 “价格咨询” + “议价” + “购买意向”
-
直接计算 accuracy 不合理:
- 因为模型可能部分标签预测正确,但 accuracy 只算完全匹配,会严重低估性能
F1-score
-
综合 Precision(精确率) 和 Recall(召回率) 的指标
-
定义:
![image]()
-
Precision(精确率):模型预测的正样本中,有多少是真的
-
Recall(召回率):真实正样本中,有多少被模型预测出来
F1-score 是平衡精确率和召回率的调和平均,比单纯 accuracy 更适合多标签或类别不平衡问题
3️⃣ Macro-F1 / Micro-F1
| 指标 | 计算方法 | 使用场景 |
|---|---|---|
| Macro-F1 | 对每个类别单独计算 F1,然后平均 | 类别数量相差大时,每个类别权重相等 |
| Micro-F1 | 将所有类别的 TP/FP/FN 统计在一起,再计算 F1 | 样本量较多时,更看整体预测性能 |
在客服多意图分类中:
- Macro-F1:关注每个意图都预测得好不好
- Micro-F1:整体预测正确的比例
4️⃣ 验证指标示例
假设一句话真实标签:
[价格咨询, 议价, 成交意向]
模型预测:
[价格咨询, 成交意向]
- Accuracy(严格匹配) = 0(不完全匹配)
- Precision = 2/2 = 1.0(预测的两个标签都正确)
- Recall = 2/3 ≈ 0.67(真实标签三条,只预测出两条)
- F1 ≈ 0.8 → 更合理衡量性能
F1合理范围
| 任务类型 | 数据质量 & 难度 | F1参考值 |
|---|---|---|
| 简单单标签分类(少量类别、清晰区分) | 数据标注一致,语料干净 | 0.85 ~ 0.95 |
| 中等复杂度多标签分类(多意图、多类别、不平衡) | 数据有少量噪声,类别分布合理 | 0.7 ~ 0.85 |
| 高复杂度 / 类别多且不平衡 | 数据不完全、长尾标签多 | 0.5 ~ 0.7 |
F1中准确率的计算
这个问题非常关键。Accuracy(准确率)之所以容易被误用,正是因为很多人“公式会背,但语义没吃透”。我按业务可解释性来讲,而不是只讲数学。
一、先给一句“人话版”定义
Accuracy = 在所有判断中,模型判断“对”的比例。
也就是:
- 预测对了多少次
- 除以
- 总共做了多少次判断
二、把公式逐项翻译成“业务语言”
[
Accuracy = TP + TN\TP + TN + FP + FN
]
我们逐个解释:
1️⃣ TP(True Positive)——“该抓的抓对了”
- 真实是正类
- 模型也预测为正类
例子(客服意图):
- 用户真的有【投诉】
- 模型也识别成【投诉】
👉 这是“有价值的正确判断”
2️⃣ TN(True Negative)——“本来就不是,我也没说是”
- 真实是负类
- 模型预测为负类
例子:
- 用户不是【投诉】
- 模型也没有打【投诉】
👉 在多标签任务中,这一项数量巨大
3️⃣ FP(False Positive)——“乱说有”
- 真实不是
- 模型却说是
例子:
- 用户只是咨询价格
- 模型却预测了【投诉】
👉 业务上是误报
4️⃣ FN(False Negative)——“该抓的没抓到”
- 真实是
- 模型却没预测
例子:
- 用户真的在投诉
- 模型没识别出来
👉 业务上是漏报(最严重)
三、Accuracy 在“单标签 vs 多标签”中的本质区别
场景 1:单标签分类(还能勉强用)
10 个样本,每个样本只有 1 个标签:
- TP / FP / FN / TN 都在一个量级
- Accuracy 有一定参考价值
场景 2:多意图 / 多标签(Accuracy 几乎失效)
假设:
- 100 个可能意图
- 每个用户真实只有 1~2 个意图
那么对每个样本来说:
- TN ≈ 98
- TP ≈ 1
- FN ≈ 1
- FP ≈ 0~1
即使模型 什么意图都不预测:
- TP = 0
- FP = 0
- FN = 2
- TN = 98
[
Accuracy = \frac{98}{100} = 98%
]
👉 模型完全不可用,但 Accuracy 高得离谱
四、用一句话解释 Accuracy 的“致命问题”
Accuracy 把“没发生的事情判断没发生”(TN)
和
“真正识别出用户需求”(TP)
当成同等重要
而在真实业务中:
- TN 的价值 ≈ 0
- FN 的损失极高
- TP 才是模型存在的意义
五、为什么你会觉得这个公式“怪怪的”
因为它在隐含一个假设:
“正类和负类同等重要、同等稀缺”
而在你的场景里(多意图客服):
- 正类:极少
- 负类:极多
👉 假设不成立,公式自然“失真”
六、什么时候 Accuracy 才有意义?
| 场景 | 是否适合用 Accuracy |
|---|---|
| 二分类,正负均衡 | ✅ |
| 单标签,多类分类 | ⚠️ 勉强 |
| 多标签 / 多意图 | ❌ 不建议 |
| 异常检测 / 风控 | ❌ |
七、面试时一句“高级但不装”的解释(建议记)
“Accuracy 表示整体预测正确的比例,但它把大量 True Negative 也计入正确。在多意图、多标签场景中,负类数量远大于正类,Accuracy 会被 TN 主导,无法反映模型是否真正识别到了用户意图,因此通常用 Recall、Precision 或 F1 作为核心指标。”
八、一句话总结
Accuracy = 看起来全面,实则最容易骗人
在多意图任务中,它更多反映的是“模型没乱猜”,而不是“模型抓对了需求”。
如果你愿意,下一步我可以直接帮你:
- 用你当前的 多意图客服任务,给一套 指标选择 + 阈值策略
- 或者把 Accuracy / F1 / Recall 和 业务 KPI(转化率、投诉漏判) 一一对应起来
召回率(Recall的计算)
明白,你想知道 多意图 / 多标签分类的 Recall(召回率)怎么计算,我详细分步讲清楚:
1️⃣ Recall 定义(单标签分类)
单标签分类任务中:
[
\text{Recall} = \frac{\text{预测正确的正样本数 (TP)}}{\text{真实正样本数 (TP + FN)}}
]
- TP(True Positive):正确预测为正
- FN(False Negative):真实正但没预测到
Recall 越高 → 模型漏掉正标签的概率越低
2️⃣ 多标签 / 多意图分类特点
-
每个样本可以有 多个标签
-
例子:一句话真实标签
[价格咨询, 议价, 购买意向] -
模型预测:
[价格咨询, 购买意向]
-
-
这里 TP = 2(价格咨询 + 购买意向预测正确)
-
FN = 1(议价没预测出来)
3️⃣ 多标签 Recall 计算方法
① 样本级 Recall(per-sample)
-
对每条样本:
[
Recall_i = \frac{|\text{预测标签} \cap \text{真实标签}|}{|\text{真实标签}|}
] -
本例:
[
Recall = \frac{2}{3} \approx 0.67
] -
最终取 平均:
[
Recall = \frac{1}{N} \sum_{i=1}^{N} Recall_i
]
② 类别级 Recall(per-class)
-
对每个标签单独统计 TP / FN:
[
Recall_c = \frac{\text{TP for class c}}{\text{TP + FN for class c}}
] -
对多标签任务可以计算:
- Macro-Recall:所有标签 Recall 平均 → 每个标签权重相等
- Micro-Recall:把所有 TP/FN 累加再计算 → 类别多寡按样本量加权
4️⃣ 与 F1 的关系
- F1 = 2 × (Precision × Recall) / (Precision + Recall)
- 多标签分类常用 Macro-F1 / Micro-F1,就是在 Recall 的基础上综合 Precision 来衡量模型性能
5️⃣ 面试可表述
“多意图 / 多标签分类中,Recall 衡量模型覆盖真实意图的能力。
- 样本级 Recall:每条样本预测的正确标签数 / 真实标签数
- 类别级 Recall:每个标签统计 TP / (TP+FN)
- 最终可用 Macro-Recall 或 Micro-Recall 平均,结合 Precision 计算 F1-score,用于衡量多标签模型的整体效果。”



浙公网安备 33010602011771号