我来把 macro-F1 / micro-F1 以及 head / tail 类指标 的含义解释清楚:


1. micro-F1

  • 计算方式:把 所有样本 当作一个整体来统计 TP/FP/FN,再算 F1。
  • 特点:大类样本多 → 大类的表现占主导
  • 在你的数据里,前 3 个 phylum 就占了 ~71%,所以 micro-F1 高低几乎完全取决于模型对这三大类的表现。

👉 解读:micro-F1 反映的是“整体精度”,偏向头部类的真实情况。


2. macro-F1

  • 计算方式:对 每个类 分别算 F1,然后取平均。
  • 特点:每个类权重相等,哪怕一个类只有几十个样本。
  • 在你的数据里,长尾类(比如只有几十个甚至个位数的类)会被公平计入平均值。

👉 解读:macro-F1 反映的是模型是否“照顾到了长尾类”,能不能避免只会预测头部类。


3. 为什么要同时报告?

  • 只看 micro-F1:模型可能在大类上表现很好(看起来 0.9+),但长尾类完全崩掉(全预测错),仍然有高分。
  • 只看 macro-F1:长尾类权重过高(哪怕只有几个样本),整体分数可能被拉低,不代表实际部署价值。
  • 两者结合:既能看模型总体实用性(micro),又能看对稀有类是否公平(macro)。

4. head / tail 类的拆分指标

在长尾分布下常用:

  • head classes:样本数多的类(比如 top 10 类)。
  • tail classes:样本数少的类(比如出现 < min_count=50 的类,或者后 100 个类)。

可以分别计算:

  • head-accuracy / head-F1
  • tail-accuracy / tail-F1

👉 解读

  • 如果 head 高、tail 低 → 模型只会预测大类。
  • 如果 head 稍微下降、tail 明显提高 → 说明 focal loss / class weight / “Other” 策略起到了平衡作用。

5. 在你场景里的意义

  • 你的数据 前 3 类 >70%,长尾一大堆。

  • 所以:

    • micro-F1 基本等于“模型能否分对 Pseudomonadota / Bacillota / Actinomycetota” → 高了没太大信息量。
    • macro-F1 才能体现对 tail 类的改进 → focal loss、class weight、合并 Other 都是为了提高 macro-F1。
    • head/tail 指标能更直观地告诉你:模型到底是在“做大类分类器”,还是确实在学习长尾信号。

✅ 总结:
在报告里你可以这样写:

  • 我们同时使用 micro-F1(整体性能)macro-F1(类间公平性) 来评估模型。
  • 另外按 head/tail 类划分进一步拆解,展示模型对大类与长尾类的不同表现。
  • 改进措施(focal loss、合并 Other 类、λ 调整)若能提高 macro-F1 或 tail-F1,而不明显损害 micro-F1/head-F1,就说明方案是成功的。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐