当前位置: 首页 > 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:更关注全局统计,适合大类主导场景。
    实际应用中需根据数据分布和任务目标选择!
http://www.dtcms.com/a/92538.html

相关文章:

  • 在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拉取的文件换行格式
  • Codeforces Round 1013 (Div. 3)
  • 企业入驻成都国际数字影像产业园,可享150多项专业服务
  • AwesomeQt分享(含源码)
  • Leetcode 路径总和 III
  • 振弦采集读数仪 智能型 支持振弦、温度、电压、电流测量,无线传输 自动化操作 适用地质灾害与土木工程监测
  • Java条码与二维码生成技术详解
  • 3.2 罗必达法则
  • 23种设计模式-状态(State)设计模式
  • Vala编成语言教程-构造函数和析构函数
  • SQL注入零基础学习二MYSQL手工注入