学习和研究机器学习、深度学习的人经常会需要对AI模型的效果进行判定,其中最常用到的判定依据是精确度(Precision,又称为准确度、精准度)和召回率(Callback)。到底什么是精确度和召回率?它们的本质区别是什么?本文讨论这些问题。
精确度和召回率都是用来判断AI模型预测效果的指标,取值范围都是[0, 1],越接近0表示模型的效果越差,0表示模型全部预测错误;越接近1表示模型的效果越好,1表示全部预测正确。
两者的本质区别在于,精确度是针对模型的输出进行计算的,而召回率是针对模型的输入计算的。
比如,设有一个模型用来对样本进行三分类,三个分类分别是A、B和C,测试结果如下:
输入\输出 | A | B | C | 合计 |
A | 40 | 6 | 4 | 50 |
B | 1 | 57 | 2 | 60 |
C | 4 | 3 | 63 | 70 |
合计 | 45 | 66 | 69 | 180 |
其中最后一列表示输入A、B、C类样本的数量分别是50、60、70个,最后一行表示模型预测输出A、B、C类样本的数量分别是45、66和69。表中的粗体和红色数据分别表示预测准确和预测错误的样本数量。比如在输出的45个A类样本中,有40个是预测正确的,5个是预测错误的。
所谓A类样本的预测精确度,就是在输出的45个A类样本中有多少是预测正确的,用表示。显然有:
同理,有:
而A类样本的预测召回率,就是在输入的50个A类样本中,有多少是预测正确的,用表示。显然有:
同理,有:
所以,即使是同一个类别的精确度和召回率也是不一样的。关于精确度和召回率有以下结论:
- 同一个类别的精确度和召回率是不一样的。
- 把所有类别样本集中在一起计算出的加权平均精确度等于加权平均召回率。上例中输入的样本一共有180个,输出的样本也是180个,其中,预测正确的是40+57+63=160个,所以,加权平均精确度等于加权平均召回率等于160/180=0.89。
- 一个类别的精确度的提高(或者降低)并不必然导致这个类别的召回率的提高(或者降低),反之亦然。
- 实践中,精确度达到最大时,召回率会达到最小,反之亦然,见下图PR曲线。
PR曲线