在机器学习中,**macro-F1(宏平均F1)和micro-F1(微平均F1)**是两种评估多分类任务性能的指标。它们的核心区别在于对各类别的权重分配方式不同,适用于不同的场景需求。
1. 定义与计算方式
(1)Macro-F1(宏平均F1)
-
核心思想:平等看待每个类别,计算每个类别的F1值后取算术平均。
-
计算步骤:
- 对每个类别单独计算F1值(基于该类的TP、FP、FN)。
- 将所有类别的F1值相加,除以类别总数。
-
公式:
Macro-F1 = 1 N ∑ i = 1 N F1 i \text{Macro-F1} = \frac{1}{N} \sum_{i=1}^{N} \text{F1}_i Macro-F1=N1i=1∑NF1i
(其中,(N)为类别数,(\text{F1}_i)为第(i)类的F1值)
(2)Micro-F1(微平均F1)
- 核心思想:将所有类别的预测结果汇总成一个全局的混淆矩阵,再计算整体F1。
- 计算步骤:
- 累加所有类别的TP、FP、FN总数。
- 用全局的TP、FP、FN计算一个统一的F1值。
- 公式:
Micro-F1 = 2 ⋅ Global-P ⋅ Global-R Global-P + Global-R \text{Micro-F1} = \frac{2 \cdot \text{Global-P} \cdot \text{Global-R}}{\text{Global-P} + \text{Global-R}} Micro-F1=Global-P+Global-R2⋅Global-P⋅Global-R
(其中,Global-P和Global-R是全局的精确率和召回率)
2. 核心区别
对比维度 | Macro-F1 | Micro-F1 |
---|---|---|
权重分配 | 每个类别的权重相等 | 每个样本的权重相等 |
适用场景 | 类别不平衡时,关注小类性能 | 类别平衡时,关注整体性能 |
对类别敏感度 | 对小类敏感,受小类影响较大 | 对大类敏感,受大类主导 |
数学本质 | 类间平均(先计算,后平均) | 样本间平均(先汇总,后计算) |
3. 例子说明
假设一个三分类任务(A、B、C),混淆矩阵如下:
真实\预测 | A | B | C |
---|---|---|---|
A | 90 | 5 | 5 |
B | 2 | 85 | 13 |
C | 1 | 10 | 89 |
计算步骤:
-
Macro-F1:
- 计算每类的F1:
- A类:Precision=90/(90+2+1)=0.97, Recall=90/(90+5+5)=0.90 → F1=0.93
- B类:Precision=85/(5+85+10)=0.85, Recall=85/(2+85+13)=0.85 → F1=0.85
- C类:Precision=89/(5+13+89)=0.83, Recall=89/(1+10+89)=0.89 → F1=0.86
- Macro-F1 = (0.93 + 0.85 + 0.86)/3 ≈ 0.88
- 计算每类的F1:
-
Micro-F1:
- 全局TP = 90+85+89 = 264
- 全局FP = (5+2+1) + (5+13+10) + (5+13+10) = 需重新计算(实际为各列总和减TP)
- 全局Precision = 264 / (264 + FP)
- 全局Recall = 264 / (264 + FN)
- 最终结果偏向样本数多的类别(例如A类样本更多时)。
4. 如何选择?
-
用Macro-F1:
当类别不平衡(如医疗诊断中的罕见病),且需要平等评估每个类别的表现时。 -
用Micro-F1:
当类别相对平衡(如新闻分类),且更关注整体的准确率(尤其是大类样本的预测效果)。
总结
- Macro-F1:公平对待每个类,适合小类敏感场景。
- Micro-F1:更关注全局统计,适合大类主导场景。
实际应用中需根据数据分布和任务目标选择!