Hi,大家好,我是半亩花海。接着上次的模型评估与交叉验证继续更新《白话机器学习的数学》这本书的学习笔记,在此分享准确率、精确率、召回率、F1值相关评估原理。本章的基于前几节已建立的模型进行评估知识的学习,欢迎大家交流学习!
目录
一、引言
二、准确率(精度,Accuracy)
三、精确率(Precision)
四、召回率(Recall)
五、F1值(F-Measure)
一、引言
看到这个标题,我们应该会很容易想到运用 Yolov5 框架训练模型完后会出现很多末评估的图片,如下图所示,那么它们的具体含义是什么呢?显然,和本文讲述的模型评估相关知识密切相关。
二、准确率(精度,Accuracy)
准确率的计算公式如下:
在上一篇文章《机器学习 | 评估原理——模型评估与交叉验证-CSDN博客》中,我们已经知道了精度的计算公式即如上式所示。
一般来说,只要计算出这个 Accuracy 值,基本上就可以掌握分类结果整体的精度了。但是有时候只看这个结果会有问题,所以还有别的指标。 比如下面这个例子,假设图中的圆点是 Positive 数据、叉号是 Negative 数据,我们来考虑一下数据量极其不平衡的情况。
假设有 100 个数据,其中 95 个是 Negative。那么,哪怕出现模型把数据全部分类为 Negative 的极端情况,Accuracy 值也为 0.95,也就是说模型的精度是 95%。既然 Positive 相对少很多,那么即使模型把数据全部分类为 Negative,它的精度也会很高。但是不管精度多高,一个把所有数据都分类为 Negative 的模型,肯定不能说它是好模型对吧?
遇到这种情况,仅看整体的精度根本看不出来问题。所以要引入别的指标。这些指标稍微有点复杂,结合具体的数据来看更好理解,所以我们用如下图所示的例子来说明。
三、精确率(Precision)
精确率的计算公式如下:
在“二、准确率”中的例子中,这看上去对 Positive 数据分类得不够好。首先我们来看另一个指标——精确率(Precision)。
这个指标只关注 TP 和 FP。根据表达式来看,它的含义是在被分类为 Positive 的数据中,实际就是 Positive 的数据所占的比例。
我们实际地代入数值来计算看看。
这个值越高,说明分类错误越少。 拿这个例子来说,虽然被分类为 Positive 的数据有 3 个,但其中只有 1 个是分类正确的。所以计算得出的精确率为 0.333,属实很低。
四、召回率(Recall)
召回率的计算公式如下:
把精确率分母上的 FP 换成 FN 就是它了。这个指标只关注 TP 和 FN。根据表达式来看,它的含义是在 Positive 数据中,实际被分类为 Positive 的数据所占的比例。
我们再来算算它的值。
这个值越高,说明被正确分类的数据越多。拿这个例子来说,虽然 Positive 数据共有 5 个,但只有 1 个被分类为 Positive。所以计算得出的召回率也很低。
基于这两个指标来考虑精度是比较好的。 精确率和召回率都很高的模型就认为是一个好模型,但是在实际情况下,精确率和召回率会一个高一个低,需要我们取舍。
五、F1值(F-Measure)
F1值的计算公式如下:
在之前的学习中,我们已经学习了准确率(Accuracy)、精确率(Precision)和召回率(Recall),有没有这样一个值能够综合考虑这两个值呢?如果只是简单地计算平均值并不算很好的方法。
假设现在有两个模型,它们的精确率和召回率如下数据所示。
模型 B 的召回率是 1.0,也就是说所有的 Positive 数据都被分类为 Positive 了,但是精确率也实在是太低了。如果将所有的数据都分类为 Positive,那么召回率就是 1.0。但是这样一来,Negative 数据也会被分类为 Positive,所以精确率会变得很低。
看一下两个模型的平均值,会发现模型 B 的更高。但它是把所有数据都分类为 Positive 的模型,精确率极低,仅为 0.02,并不能说它是好模型。
所以就出现了评定综合性能的指标 F 值。下面表达式中的 Fmeasure 就是 F 值,Precision 是前面说的精确率,Recall 是召回率。(ps:其实也有很多人把 F 值的表达式变形,写成下面这样,二者是相同的)
精确率和召回率只要有一个低,就会拉低 F 值,该指标考虑到了精确率和召回率的平衡。计算一下前面两个模型的 F 值我们便会对这个说法理解得更加透彻。
和简单取平均值时得到的结果不同,模型 A 的 F 值更高。 这说明该指标考虑到了精确率和召回率的平衡。
另外,除 F1 值之外,还有一个带权重的 F 值指标,如下式所示。
式中, 指的是权重。我们可以认为 F 值指的是带权重的 F 值,当权重为 1 时才是刚才介绍的 F1 值。带权重的 F 值更通用。
F1 值在数学上是精确率和召回率的调和平均值(ps:关于调和平均值,其实并不需要太深入地了解,大家大致地了解清楚即可)。