如何在3 x 3的混淆矩阵中计算精度和召回率


12
                  Predicted
                    class
               Cat  Dog Rabbit
  Actual class
           Cat   5    3      0
           Dog   2    3      1
        Rabbit   0    2     11

如何计算精度和召回率,因此轻松计算F1得分。正常的混淆矩阵为2 x 2维。但是,当它变成3 x 3时,我不知道如何计算精度和召回率。

Answers:


19

如果您对精度(又称正预测值PPV)和召回率(又称敏感度)的定义进行拼写,您会发现它们与一个类别相关,而与其他任何类别无关:

召回或敏感性是在真正属于c类的所有案例中正确标识为属于c类的案例的比例。 (鉴于我们有一个真正属于“ c ” 的案例,正确预测这一可能性是多少?)

精确度或正预测值PPV是正确分类为c类的案例在分类器声称属于c类的所有案例中所占的比例。
换句话说,在那些预计属于c类的情况下,哪个分数真正属于c类?(给定谓词“ c ”,正确的概率是多少?)

在那些预测属于c类的情况下,负预测值NPV到底不属于c类?(给定谓词“ not c ”,正确的概率是多少?)

因此,您可以计算每个类的精度和召回率。对于多类混淆表,这是对角元素分别除以它们的行和列总和:

计算方案

资料来源:贝利特人。Salzer,R.&Sergo,V.使用部分类成员资格的软分类模型验证:敏感性和联合的扩展概念。Chemom Intell Lab Syst,122,12-22(2013)。DOI:10.1016 / j.chemolab.2012.12.003


非常感谢。我已经了解您的解决方案中描述的类比。我会读纸的。我会接受这个答案。我不了解PPV和NPV。请以图形方式解释这些概念,因为已解释了Sens和Spec,我将接受您的回答。
user22149 2014年

3

通过将数据简化为强制选择(分类)并且不记录是否有任何“关闭呼叫”,您除了获得秘密的效用/损失/成本函数并使用任意阈值之外,还可以获得最小信息最小精度统计估计值。 。最好使用最大的信息,这将包括类成员资格而不是强制选择的可能性。


1

最简单的方法是根本不使用confusion_matrix,使用category_report(),它将为您提供您所需要的一切,加油...

编辑:
这是confusion_matrix()的格式:
[[TP,FN]
[FP,TN]]
并且分类报告给出了所有这些


那就是如果您使用的是python ///
Omkaar.K,

0

如果您只是想要结果,我的建议是不要考虑太多,而要使用您可以使用的工具。这是您可以在Python中完成的方法;

import pandas as pd
from sklearn.metrics import classification_report

results = pd.DataFrame(
    [[1, 1],
     [1, 2],
     [1, 3],
     [2, 1],
     [2, 2],
     [2, 3],
     [3, 1],
     [3, 2],
     [3, 3]], columns=['Expected', 'Predicted'])

print(results)
print()
print(classification_report(results['Expected'], results['Predicted']))

获得以下输出

   Expected  Predicted
0         1          1
1         1          2
2         1          3
3         2          1
4         2          2
5         2          3
6         3          1
7         3          2
8         3          3

             precision    recall  f1-score   support

          1       0.33      0.33      0.33         3
          2       0.33      0.33      0.33         3
          3       0.33      0.33      0.33         3

avg / total       0.33      0.33      0.33         9

0

以下是假设我们的类别标签为A,B和C的多类别混淆矩阵的示例

A / P A B C总和
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18

总和18 18 19 55

现在,我们为Precision和Recall分别计算三个值,并将它们分别称为Pa,Pb和Pc。以及类似的Ra,Rb,Rc。

我们知道Precision = TP /(TP + FP),因此对于Pa来说,真实正值将被预测为A的实际A,即10,该列中两个单元格的其余部分(无论是B还是C)都设为False Positive。所以

Pa = 10/18 = 0.55 Ra = 10/17 = 0.59

现在,B类的精度和召回率分别为Pb和Rb。对于B类,真正的正数是将实际的B预测为B,即包含值12的单元格,该列中两个单元格的其余部分为False Positive,因此

Pb = 12/18 = 0.67 Rb = 12/20 = 0.6

类似地,Pc = 9/19 = 0.47 Rc = 9/18 = 0.5

分类器的整体性能将由平均精度和平均召回率决定。为此,我们将每个类的精度值与该类的实际实例数相乘,然后将它们相加并除以实例总数。喜欢 ,

平均精度=(0.55 * 17 + 0.67 * 20 + 0.47 * 18)/ 55 = 31.21 / 55 = 0.57平均召回率=(0.59 * 17 + 0.6 * 20 + 0.5 * 18)/ 55 = 31.03 / 55 = 0.56

希望对您有所帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.