F1 Score
上一篇博客学习了精准率和召回率两个指标。当我们的数据极度偏斜的时候,使用这两个指标实际上是比使用准确度这个指标更好的。不过,这里有一个问题,这里有两个指标,它们之间可能会产生差异。比如有的时候算法的精准率高一些,召回率低一些;有的时候又相反。那么具体在使用的时候,我们怎么解读这个精准率和召回率呢?
其实还是要根据实际的应用场景来决定。对于有一些场景来说,我们更加注重精准率。比如,我们做一个机器学习的算法,这个机器学习的算法是进行股票的预测。那么我们有可能将股票预测这样的问题做成一个二分类问题,我们预测未来的股票是升还是降。我们关注的是升这种情况,我们将股票升这种情况分类为 1,将股票降这种情况分类为 0,在这种情况下,我们可能更关心精准率,我们希望精准率足够的高。为什么这样说呢?精准率意思就是我们做的所有分类为 1 的预测中有多少是预测准确的。因为在预测升这种情况下,我们就可能会大量买入股票,如果预测错误的话,我们将会损失惨重。所以我们希望这个比例越高越好。
还有另外一种场景,我们更关心召回率。比如在医疗领域病人的诊断,如果此时召回率低,意味着病人本来就已经得病了,但是我们却没有正确的把它预测出来,这个结果就可能延误治疗的最佳时机。所以召回率十分重要,我们期望将所有患病的患者都能够准确的预测出来。但是此时精准率低一些并没有关系,因为在这种情况下,准确率低一些意味着犯了 FP 的错误,就是有一些人群没患病,我们却错误的以为他们患病,那么在这种情况下,让他们再做进一步的检查进行确诊就好了。此时,召回率就比精准率重要。
但是还有一种情况,我们需要同时关注精准率和召回率,此时我们就要一种新的指标 F 1 F1 F1 S c o r e Score Score,它的目的就是要兼顾精准率和召回率。它的计算方法如下:
这个式子描述的是精准率和召回率的调和平均值。可能有的小伙伴不是很明白调和平均值,我们简单列出调和平均值的公式:
那么我们为什么要取二者的调和平均值呢?调和平均值有一个特点就是如果这二者极度不平衡的话,比如说一个值特别低,另一个值特别高,那么最终我们得到的
F
1
F1
F1
S
c
o
r
e
Score
Score 也将特别低。只有这两者都非常高,
F
1
F1
F1
S
c
o
r
e
Score
Score 才会高。这是和算术平均值非常大的区别。
下面我们就具体实现
F
1
F1
F1
S
c
o
r
e
Score
Score。
具体代码见 63 F1 Score.ipynb