当前位置: 首页 > news >正文

​macro-F1(宏平均F1)​和micro-F1(微平均F1)

在机器学习中,**macro-F1(宏平均F1)micro-F1(微平均F1)**是两种评估多分类任务性能的指标。它们的核心区别在于对各类别的权重分配方式不同,适用于不同的场景需求。


1. 定义与计算方式

(1)Macro-F1(宏平均F1)
  • 核心思想:平等看待每个类别,计算每个类别的F1值后取算术平均。

  • 计算步骤

    1. 对每个类别单独计算F1值(基于该类的TP、FP、FN)。
    2. 将所有类别的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=1NF1i

    (其中,(N)为类别数,(\text{F1}_i)为第(i)类的F1值)

(2)Micro-F1(微平均F1)
  • 核心思想:将所有类别的预测结果汇总成一个全局的混淆矩阵,再计算整体F1。
  • 计算步骤
    1. 累加所有类别的TP、FP、FN总数。
    2. 用全局的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-R2Global-PGlobal-R

(其中,Global-P和Global-R是全局的精确率和召回率)


2. 核心区别

对比维度Macro-F1Micro-F1
权重分配每个类别的权重相等每个样本的权重相等
适用场景类别不平衡时,关注小类性能类别平衡时,关注整体性能
对类别敏感度对小类敏感,受小类影响较大对大类敏感,受大类主导
数学本质类间平均(先计算,后平均)样本间平均(先汇总,后计算)

3. 例子说明

假设一个三分类任务(A、B、C),混淆矩阵如下:

真实\预测ABC
A9055
B28513
C11089
计算步骤
  1. 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
  2. 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:更关注全局统计,适合大类主导场景。
    实际应用中需根据数据分布和任务目标选择!

相关文章:

  • 在kali linux中配置hive(mysql元数据库)
  • 现阶段高校的人工智能方案培训如何?
  • MVC基础概念及相应代码示例
  • Nextjs15 - middleware的使用
  • LeetCode算法题(Go语言实现)_11
  • (每日一道算法题) K 个一组翻转链表
  • 2025宠物智能喂养设备全栈开发方案:Python驱动的高效实现路径
  • IntelliJ IDEA创建Maven工程
  • Ardupilot开源无人机之Geek SDK进展2025Q2
  • 我的世界1.20.1forge模组进阶开发教程——结构(3)
  • 华为 eNSP 链路聚合:从面试问题到实战解析
  • MySQL数据库精研之旅第四期:解锁库操作高阶技能
  • Python数据可视化与数据处理全解析:Matplotlib图形控制与Pandas高效数据分析实战
  • MySQL中的Redo Log、Undo Log和Binary Log
  • 大模型在支气管肺癌预测及临床决策中的应用研究报告
  • 蓝桥杯 临时抱佛脚 之 二分答案法与相关题目
  • 【设计模式】抽象工厂模式(含与工厂方法模式的对比)
  • Unity-RectTransform设置UI width
  • wokwi arduino mega 2560 - 模数与数模转换AD和DA
  • 设置git拉取的文件换行格式
  • 中国一重集团有限公司副总经理陆文俊被查
  • 江西暴雨强对流明显,专家:落雨区高度重叠,地质灾害风险高
  • 逆境之上,万物生长
  • 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实
  • 商务部再回应中美经贸高层会谈:美方要拿出诚意、拿出行动
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开