多分类问题中查全率和查准率的理解(Precision-Recall)

时间:2022-12-07 11:20:13

查全率查准率是从信息检索来的,那么我们就得先看看原来的是怎么定义的:

查全率——它是指检出的相关文献量与检索系统中相关文献总量的比率,是衡量信息检索系统检出相关文献能力的尺度。
查准率——它是指检出的相关文献量与检出文献总量的比率,是衡量信息检索系统检出文献准确度的尺度。

使用泛指性较强的检索语言(如上位类、上位主题词)能提高查全率,但查准率下降。
使用专指性较强的检索语言(如下位类、下位主题词)能提高查准率,但查全率下降。
下面用多分类问题举个例子,首先我们计算多分类问题的混淆矩阵,然后计算各个指标,结果如下:

confus =

69            2              4              6           1          14           4
3             70            6              2           7           6            6
4              6             66             2           5           6          11
2              2             18            51          9          12          6
4              8              1               2          80         3           2
7             6               3              7           2           67        8
11           6               7              5           7           6          58

accuracy =0.6586

numcorrect =461

precision =0.6900    0.7000    0.6286    0.6800    0.7207    0.5877    0.6105

recall =0.6900    0.7000    0.6600    0.5100    0.8000    0.6700    0.5800

F =0.6900    0.7000    0.6439    0.5829    0.7583    0.6262    0.5949

这是一个7-分类问题,每一类样本100。混淆矩阵看见了么? confus矩阵中每一行和等于该类的样本和=100;但是每一列就不是100了,每一列其实的意义,就是信息检索的返回的所有结果

假设我们用类别3的标签进行搜索,那么会返回confus中第3列的所有数据,没问题吧?因为分到第3类的确实是这些数据,一共有105个,因为有其他的类也分到这个类中了呗。

所以第三类的查准率=检索出的相关文档数目(66)/检索返回的所有的文档数目(105)=0.6288=precision(3)。结果是没问题的吧。

查全率那就是检索出的文档数目(66)/数据库中的第三类的所有文档数目(检索出的第三类+没有检索出的第三类=confus第三行的和=100)=0.66=recall(3)。也没问题吧。

理解了么?