sklearn的加权F1分数从何而来?

机器算法验证 参考 scikit-学习 精确召回
2022-03-02 15:10:22

Python 中的 Scikit-Learn 包有两个指标:f1_scorefbeta_score这些中的每一个都有一个'weighted'选项,其中类 F1 分数乘以“支持”,即该类中的示例数。

有没有关于这个指标的现有文献(论文、出版物等)?我似乎找不到任何东西。

1个回答

为每个标签计算 F1 分数,然后通过支持对它们的平均值进行加权 - 这是每个标签的真实实例数。它可能导致 F 分数不在精确率和召回率之间。

例如,一个简单的加权平均计算如下:

>>> import numpy as np;
>>> from sklearn.metrics import f1_score
>>> np.average( [0,1,1,0 ], weights=[1,1,1,1] )
0.5
>>> np.average( [0,1,1,0 ], weights=[1,1,2,1] )
0.59999999999999998
>>> np.average( [0,1,1,0 ], weights=[1,1,4,1] )
0.7142857142857143

每个 F1 分数的加权平均值以相同的方式计算:

f_score = np.average(f_score, weights=weights)

例如:

>>> f1_score( [1,0,1,0], [0,0,1,1] )
0.5
>>> f1_score( [1,0,1,0], [0,0,1,1], sample_weight=[1,1,2,1] )
0.66666666666666663
>>> f1_score( [1,0,1,0], [0,0,1,1], sample_weight=[1,1,4,1] )
0.80000000000000016

它旨在用于强调某些样本相对于其他样本的重要性。


编辑回答 F 分数的来源:

F-measure 在 1992 年的第四次信息理解会议 (MUC-4) 上由 Nancy Chinchor 首次引入以评估信息提取任务,“MUC-4 评估指标”,https://www.aclweb.org/anthology/ M/M92/M92-1002.pdf它指的是 van Rijsbergen 的 F-measure,它指的是 N Jardine 和 van Rijsbergen CJ 的论文——《信息检索中层次聚类的使用》。

它也有其他名称,如 Sørensen-Dice 系数、Sørensen 指数和 Dice 系数。这源于 1948 年 Thorvald Julius Sørensen 的论文——“一种基于物种内容相似性在植物社会学中建立等幅群体的方法及其在丹麦公地植被分析中的应用”。