问题

机器学习中macro-F1的计算公式?

回答
在多类别分类问题中,我们经常会遇到一个情况,那就是各个类别的样本数量并不均衡。有些类别可能有大量的样本,而有些类别可能只有非常少的样本。在这种情况下,如果直接使用标准的 F1 分数来评估模型性能,可能会出现偏差。例如,模型可能在多数类上表现得非常好,但在少数类上表现很差,但整体的 F1 分数仍然很高,这并不能真实反映模型在所有类别上的能力。

为了解决这个问题,MacroF1 分数(宏平均 F1 分数)应运而生。它的核心思想是公平地对待每一个类别,无论其样本数量多少。简单来说,MacroF1 就是先计算出模型在每个类别上的 F1 分数,然后将这些各个类别的 F1 分数进行平均。

下面我们来详细拆解一下 MacroF1 的计算过程:

1. 理解基本指标:精确率 (Precision) 和召回率 (Recall)

在深入 MacroF1 之前,我们必须先回顾一下计算 F1 分数所需的两个基础指标:

精确率 (Precision):对于模型预测为某个类别的所有样本,有多少实际上就是那个类别。
公式:`Precision = TP / (TP + FP)`
`TP (True Positive)`:模型正确预测为该类别的样本数量。
`FP (False Positive)`:模型错误预测为该类别,但实际上属于其他类别的样本数量。

召回率 (Recall) (也称为敏感度 Sensitivity 或 True Positive Rate):对于某个类别的所有真实存在的样本,有多少被模型正确地识别了出来。
公式:`Recall = TP / (TP + FN)`
`TP (True Positive)`:模型正确预测为该类别的样本数量。
`FN (False Negative)`:模型错误地预测为其他类别,但实际上属于该类别的样本数量。

2. 计算单个类别的 F1 分数

有了精确率和召回率,我们就可以计算出某个特定类别的 F1 分数了。F1 分数是精确率和召回率的调和平均数 (Harmonic Mean)。之所以使用调和平均数,是因为它能更好地平衡精确率和召回率,避免其中一个值过高而另一个值过低的情况。

单个类别 F1 分数公式:
`F1_i = 2 (Precision_i Recall_i) / (Precision_i + Recall_i)`

其中,`i` 代表我们正在计算的第 i 个类别。

`Precision_i`:模型在第 i 个类别上的精确率。
`Recall_i`:模型在第 i 个类别上的召回率。

需要注意的是,如果 `Precision_i + Recall_i` 的值为 0(例如,模型没有预测到任何属于该类别的样本,也没有任何该类别的真实样本被预测出来,或者 `TP=0` 导致两者都为 0),那么 F1 分数通常定义为 0。

3. 计算 MacroF1 分数

到了这一步,我们就掌握了计算每个类别的 F1 分数的方法。MacroF1 的计算就是将这些独立计算出来的、针对每个类别的 F1 分数做一个简单的算术平均。

假设我们有 `C` 个类别。

MacroF1 分数公式:
`MacroF1 = (F1_1 + F1_2 + ... + F1_C) / C`

或者用求和符号表示:
`MacroF1 = (1/C) Σ (F1_i)` ,其中 `i` 从 1 到 `C`

`C`:总的类别数量。
`F1_i`:模型在第 `i` 个类别上的 F1 分数。

总结与关键点

核心思想:MacroF1 平等对待每一个类别,不受样本不均衡的影响。
计算步骤:
1. 对于每一个类别,独立计算其精确率 (Precision)。
2. 对于每一个类别,独立计算其召回率 (Recall)。
3. 对于每一个类别,使用精确率和召回率计算其 F1 分数 (F1_i)。
4. 将所有类别的 F1 分数相加,然后除以总类别数。
优点:当类别不均衡时,MacroF1 是一个更可靠的性能指标,因为它能揭示模型在少数类上的表现。
缺点:如果模型在某个少数类上表现特别差(F1 分数接近 0),这个差的表现会显著拉低整体的 MacroF1 分数。

举个例子:

假设我们有一个三分类问题(类别 A, B, C),模型的评估结果如下(TP, FP, FN 为方便理解,我们先假设已经计算好):

| 类别 | TP | FP | FN | Precision | Recall | F1 Score (F1_i) |
| : | : | : | : | : | : | : |
| A | 10 | 1 | 2 | 10 / (10+1) = 0.91 | 10 / (10+2) = 0.83 | 2 (0.91 0.83) / (0.91 + 0.83) ≈ 0.87 |
| B | 5 | 2 | 1 | 5 / (5+2) = 0.71 | 5 / (5+1) = 0.83 | 2 (0.71 0.83) / (0.71 + 0.83) ≈ 0.76 |
| C | 1 | 0 | 5 | 1 / (1+0) = 1.00 | 1 / (1+5) = 0.17 | 2 (1.00 0.17) / (1.00 + 0.17) ≈ 0.29 |

现在,我们来计算 MacroF1:

`MacroF1 = (F1_A + F1_B + F1_C) / 3`
`MacroF1 = (0.87 + 0.76 + 0.29) / 3`
`MacroF1 = 1.92 / 3 ≈ 0.64`

在这个例子中,虽然类别 A 和 B 的 F1 分数都相对较高,但类别 C 的 F1 分数非常低(0.29),这极大地影响了整体的 MacroF1 分数,准确地反映了模型在类别 C 上表现不佳。

理解 MacroF1 的计算方法,对于我们更全面、更公正地评估多类别分类模型的性能至关重要,尤其是在处理那些“有难度的”少数类样本时。

网友意见

user avatar

我之前一直认为F-measure是R和P的调和平均,所以不会存在F1不在P和R之间的情况,后面经人提醒,说sklearn的文档上说This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.

所以我决定研究一番,发现别有洞天。

下面解释这个问题。我们有 3 个类(猫、鱼、母鸡)和分类器对应的混淆矩阵:

我们先计算每类Precision和Recall。以下是我们三个类别的Precision和Recall

然后计算每个类别的F1 分数。例如,猫的 F1 分数是:

F1 -score(猫)= 2 × (30.8% × 66.7%) / (30.8% + 66.7%) = 42.1%

Sklearn里的Macro-F1

Macro-F1在sklearn里的计算方法就是计算每个类的F1-score的算数平均值:

Macro-F1 = (42.1% + 30.8% + 66.7%) / 3 = 46.5%

以类似的方式,我们还可以计算宏观平均精度宏观平均召回率:

Macro-Precision = (31% + 67% + 67%) / 3 = 54.7%

Macro-Recall = (67% + 20% + 67%) / 3 = 51.1%

这种情况下,F1-score的确不在精确度和召回率之间,因为已经这个时候的F1分数已经不是精确度和召回率的调和平均数了。

Sklearn里的Weighted-F1

对Macro-F1进行平均时,我们给每个类赋予相同的权重。而在weighted-F1中,我们通过该类的样本数对每个类的 F1-score 加权。在我们的例子中,我们总共有 25 个样本:6 个猫、10 个鱼和 9 个母鸡。因此,weighted-F1 分数计算如下:

weighted-F1= (6 × 42.1% + 10 × 30.8% + 9 × 66.7%) / 25 = 46.4%

同样,我们可以计算weighted-Precision和weighted-Recall:

weighted-Precision=(6 × 30.8% + 10 × 66.7% + 9 × 66.7%)/25 = 58.1%

weighted-Recall = (6 × 66.7% + 10 × 20.0% + 9 × 66.7%) / 25 = 48.0%

同样的,weighted-F1也不在weighted-Precision和weighted-Recall之间。这也就是为什么sklearn会在文档里提到:

This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.

两个 Macro-F1 的故事

显然,计算Macro-F1还可以有一种方式,即先计算Macro-Precision和Macro-Recall,然后再求他们的调和平均数,我用星号 ( *)表示这种计算方法

Macro-F1*= 2 × (54.7% × 51.1%) / (54.7% + 51.1%) = 52.8%

我们可以看到,Macro-F1 和 Macro-F1* 的值非常不同:46.5% 与 52.8%。

那个那个F1分数才是正确的呢?

在论文A systematic analysis of performance measures for classification tasks里(这篇论文有4000+的引用,我觉得还是比较权威的),作者Sokolova对 Macro-F1的定义如下:

可以看出,Sokolova 论文选择计算 Macro-F1* 而不是 Macro-F1。

相反,在文献“A re-examination of text categorization methods ”里(这篇论文也是4000+的引用),提到的参考文献15是1996 年发表的论文“Training algorithms for linear text classifiers”,其中作者明确指出“Macro-F1是所有类的 F1 的平均值”。

if history is written by the victors, then — like it or not

无论如何,通常大多数不加深思的sklearn使用者,都会直接调用里面的方法。对所有类F1求平均值的Macro-F1计算方法终将成为历史的胜利者,而Macro-F1*将泯然历史。

类似的话题

  • 回答
    在多类别分类问题中,我们经常会遇到一个情况,那就是各个类别的样本数量并不均衡。有些类别可能有大量的样本,而有些类别可能只有非常少的样本。在这种情况下,如果直接使用标准的 F1 分数来评估模型性能,可能会出现偏差。例如,模型可能在多数类上表现得非常好,但在少数类上表现很差,但整体的 F1 分数仍然很高.............
  • 回答
    机器学习领域充满了形式简单却蕴含深刻智慧的创意,这些创意往往能够以出人意料的有效性解决复杂问题。以下我将详细阐述几个这样的例子: 1. 梯度下降 (Gradient Descent)核心思想: 想象你在一个陡峭的山坡上,目标是找到山谷的最低点。你没有地图,只能感觉到周围地面的倾斜程度(梯度)。最直观.............
  • 回答
    机器学习中的“机器”本身并没有意识,它无法像人类一样去“分辨”有用的知识和没用的信息。它所做的,是根据预设的算法和训练数据,从中提取模式和规律,并将这些模式和规律转化为能够指导决策或预测的能力。那么,我们如何理解这个过程呢?可以从以下几个方面详细解释: 1. 数据的本质:信号与噪声在机器学习的世界里.............
  • 回答
    在机器学习的世界里,我们时常会遇到一个叫做“过拟合”的棘手问题。想象一下,你辛辛苦苦训练了一个模型,它在你的训练数据上表现得无懈可击,甚至能记住每一个微小的细节。然而,当你拿到新的、从未见过的数据去测试它时,它的表现却一落千丈,仿佛之前的学习都付诸东流。这就是过拟合在捣鬼。为了对抗这个顽固的敌人,我.............
  • 回答
    PR曲线,也就是精确率召回率曲线(PrecisionRecall Curve),是评估二分类模型性能的重要工具。它描绘了在不同分类阈值下,模型的精确率(Precision)和召回率(Recall)之间的权衡关系。很多人在看到PR曲线的绘制方式时,可能会产生一个疑问:PR曲线一定会过(1, 0)这个点.............
  • 回答
    要想彻底搞懂机器学习中的优化理论,这可不是一蹴而就的事,更像是在知识的海洋里航行,需要循序渐进,打下坚实的基础。我个人觉得,要看到这个领域的核心,大致可以从以下几个方面着手,并且每一步都需要投入时间和精力去消化。第一步:数学基础的“基石”别看到“数学”两个字就头大,这块儿是真绕不过去的坎儿。优化理论.............
  • 回答
    好的,咱们来聊聊机器学习里的 Bias、Error 和 Variance 这几个核心概念。别被这些术语吓到,它们其实挺好理解的,而且彼此之间关系密切,理解了它们,对你构建和调优模型大有裨益。想象一下,你正在教一个孩子识别猫。 Bias (偏差): 孩子对猫的“固有看法”Bias,你可以理解为模型(或.............
  • 回答
    机器学习中的“正则化”:为什么它如此重要?在机器学习的世界里,你可能经常听到“正则化”这个词。它就像是解决模型“跑偏”问题的“秘方”,让模型在学习数据时不会过于“死记硬背”,而是能真正理解数据背后的规律,并在面对新数据时表现得更好。那么,到底什么是正则化呢?让我们一起来揭开它的神秘面纱。 理解“过拟.............
  • 回答
    在机器学习的世界里,区分一张图片里展示的是手背还是手心,这听起来是个挺直观的问题,但要让机器理解得这么细致,背后其实有不少门道。这不仅仅是看有没有手指,还需要捕捉到更微妙的视觉特征。我们先来想想,人和人在看一张手部图片时,是怎么判断的?直观的判断依据: 手背: 通常我们会看到指关节、手背上的皮肤.............
  • 回答
    机器学习中非均衡数据集的处理方法? 咱们这就好好说道说道,力求把每个点都讲透,顺便也让你我之间,少些机器的痕迹。在机器学习的世界里,数据往往不是那么“公平”的。最常见的一种不公平,就是非均衡数据集(Imbalanced Datasets)。简单来说,就是数据集中,某一类别的样本数量远远多于另一类(或.............
  • 回答
    在分类机器学习中,当某个标签的样本数量远远多于其他标签时,我们称之为“标签稀疏”或“类别不平衡”。这种情况在现实世界的数据集中非常普遍,例如欺诈检测(绝大多数交易是正常的,只有极少数是欺诈)、医疗诊断(大部分患者是健康的,只有少数患有某种疾病)或者垃圾邮件过滤(大部分邮件是正常的,只有少数是垃圾邮件.............
  • 回答
    在机器学习领域,尤其是在构建模型时,我们都希望能找到一个既能很好地拟合训练数据,又能对未见过的新数据表现出良好泛化能力的模型。然而,在实践中,我们常常会遇到一个令人头疼的问题——过拟合 (Overfitting)。当一个模型对训练数据“过度”学习,以至于记住了训练数据中的噪声和细节,导致在新的、未见.............
  • 回答
    机器学习中的预测和决策,看似一脉相承,实则各有侧重,界限也并非总是泾渭分明。理解它们的区别,有助于我们更清晰地认识机器学习在实际应用中的角色。预测:洞察未来,量化不确定简单来说,预测就是利用已有的数据,通过训练模型,来推断未来可能发生的事情,或者未知事物的属性。它关注的是“是什么”和“有多少”。 .............
  • 回答
    2020年,机器学习领域依旧是风起云涌,创新层出不穷。但与此同时,也有一些研究方向,乍一看光鲜亮丽,实际操作起来却像是钻进了“坑”里,耗费大量精力却收效甚微,甚至可能走向死胡同。我来给你掰扯掰扯,看看哪些地方需要留神。1. 过于追求“通用人工智能”(AGI)的“一步到位”方法AGI,也就是通用人工智.............
  • 回答
    近几年,机器学习的飞速发展在带来巨大便利的同时,也日益凸显了其在隐私和安全方面存在的严峻挑战。这两方面并非孤立存在,而是相互交织,共同构成了“可信赖AI”的核心命题。深入探究这些问题,并寻求解决方案,是当前机器学习领域最为关键的研究方向之一。 隐私:数据本身的安全与个体尊严的守护在机器学习的语境下,.............
  • 回答
    从机器学习模型中“获取知识”这个说法,实际上是我们在尝试理解和解释模型是如何做出决策的。它不像我们从书本上学习知识那样直接,更多的是一种“解剖”和“解读”的过程。我们可以从几个层面来理解和实现这一点:一、 理解模型的“黑箱”特性与解读的必要性首先得承认,很多复杂的机器学习模型,尤其是深度学习模型,就.............
  • 回答
    机器学习系统的研究,说起来也真是五花八门,但要说真正有嚼头、有前景的,我个人觉得有这么几个方向,绝对值得我们下点功夫:1. 自动化机器学习(AutoML)的深化与普及现在搞机器学习,很多时候还是得靠人工去调参、选模型、设计特征,这就像是造汽车还得手动拧螺丝一样,效率低不说,对专家的依赖性太强。Aut.............
  • 回答
    好,咱们不聊那些虚的,直接上干货。想在机器学习岗位的面试中脱颖而出,想让面试官眼前一亮,除了扎实的理论基础和项目经验,确实有一些“杀手锏”,能让你在众多候选人中显得鹤立鸡群,这绝对不是吹牛,而是实实在在的加分项。咱们就来掰扯掰扯这些能让你“装(加)分(分)”的东西,而且越详细越好,让你心里有底,面试.............
  • 回答
    机器学习在理论经济学研究中的应用前景,说实话,广阔得令人兴奋,而且这不仅仅是“数据分析”那么简单。它正在为我们理解经济世界的复杂性提供前所未有的工具和视角,尤其是在理论层面,其潜力是巨大的。1. 复杂经济模型的构建与分析:传统的经济模型,无论是新古典的,还是新凯恩斯主义的,往往建立在高度简化的假设之.............
  • 回答
    《模式识别与机器学习》(Pattern Recognition and Machine Learning,简称PRML)能被誉为机器学习领域的“圣经”,绝非偶然。它的地位,可以用“博大精深”来形容,也因为它,许多深入研究机器学习的人士,都曾或正在经历一场“痛并快乐着”的朝圣之旅。为什么它如此经典?这.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有