您已经了解了精确率和召回率,这是评估分类模型的两个重要指标。精确率说明模型做出的正向预测中有多少是实际正确的,而召回率则说明模型识别出了多少实际的正向实例。如同我们在上一节讨论过的,这二者常常存在权衡:提升精确率有时会降低召回率,反之亦然。
那么,如果您需要一个能同时衡量这两者的单一数值该怎么办?如果您的应用场景中,找到所有相关项(高召回率)以及确保找到的项确实相关(高精确率)都显得重要呢?此时F1分数就能发挥作用。
什么是F1分数?
F1分数是一种将精确率和召回率结合成一个单一指标的方法。它的计算方式是精确率和召回率的调和平均值。
为什么使用调和平均值?
您可能会想,为什么不直接取精确率和召回率的简单平均值(算术平均值)呢?调和平均值具有一个有用特性:它会降低对一个指标非常高而另一个指标非常低的模型的权重 (weight)。即使一个指标表现不佳,简单平均值可能看起来还不错,但调和平均值会惩罚这种不平衡。
考虑一个模型,其具有:
- 精确率 = 0.9 (90%)
- 召回率 = 0.1 (10%)
算术平均值为 (0.9+0.1)/2=0.5。这个分数看起来不算太差。
然而,F1分数(我们接下来会看到如何计算)会低得多,这反映了其糟糕的召回率。调和平均值将综合分数拉向较低值,从而确保模型必须在精确率和召回率两者上都表现良好,才能获得较高的F1分数。只有当精确率和召回率都高时,它的分数才会高。
计算F1分数
F1分数的公式如下:
F1=2×精确率+召回率精确率×召回率
让我们使用之前的例子(精确率 = 0.9,召回率 = 0.1):
F1=2×0.9+0.10.9×0.1=2×1.00.09=0.18
请注意,F1分数(0.18)远低于算术平均值(0.5),并且更接近较低的指标(召回率 = 0.1)。这显示了模型在召回率方面的不足,而简单平均值掩盖了这一点。
您也可以直接使用真阳性 (TP)、假阳性 (FP) 和假阴性 (FN) 来表示F1分数:
F1=2×TP+FP+FN2×TP
这个公式是通过将精确率 (精确率=TP+FPTP) 和召回率 (召回率=TP+FNTP) 的定义代入第一个F1分数方程而得出的。
F1分数的解读
像精确率和召回率一样,F1分数的范围从0到1。
- F1分数为1表示精确率和召回率都完美。
- F1分数为0表示精确率或召回率(或两者)为零。
较高的F1分数表示精确率和召回率之间有更好的平衡。当出现以下情况时,它是一个特别有用的指标:
- 存在类别不平衡: 在一个类别数量明显多于其他类别的数据集中,准确率可能会产生误导。高F1分数可确保模型在少数类别上表现良好,同时考虑假阳性和假阴性。
- 假阳性和假阴性都重要: 如果将阴性实例错误地识别为阳性 (FP) 和未能识别阳性实例 (FN) 都是不理想的结果,F1分数会提供一个均衡的评估。例如,在医疗诊断中,漏诊疾病(低召回率)和误诊健康患者(低精确率)都可能产生重大后果。
计算示例
让我们回顾一个混淆矩阵:
|
预测为正 |
预测为负 |
| 实际为正 |
TP = 80 |
FN = 20 |
| 实际为负 |
FP = 10 |
TN = 90 |
由此,我们计算得出:
- 精确率 = TP+FPTP=80+1080=9080≈0.89
- 召回率 = TP+FNTP=80+2080=10080=0.80
现在,我们计算F1分数:
F1=2×0.89+0.800.89×0.80=2×1.690.712≈2×0.421≈0.84
F1分数为0.84表明精确率(0.89)和召回率(0.80)之间有良好的平衡。
总而言之,F1分数提供了一个单一且便捷的指标,通过平衡精确率和召回率来概括分类器的性能。当处理不平衡类别或两种分类错误(假阳性和假阴性)都需要最小化时,它尤其有价值。