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

机器算法验证 机器学习 精确召回
2022-01-24 02:00:00
                  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 时,我不知道如何计算精度和召回率。

4个回答

如果您详细说明精度(也称为阳性预测值 PPV)​​和召回率(又称为灵敏度)的定义,您会发现它们与一个独立于任何其他类别的类别相关:

召回率或敏感度是正确识别为属于 c 类案例在真正属于 c 类的所有案例中比例。 (假设我们有一个真正属于“ c ”的案例,正确预测的概率是多少?)

精度或阳性预测值 PPV是分类器声称它们属于 c 类的所有案例中正确识别为属于 c 类的案例的比例 换句话说,在那些预测属于c类的案例中,哪个部分真正属于c类?(给定预测“ c ”,正确的概率是多少?)

那些预测不属于c类的病例的负预测值 NPV,哪个部分真正不属于c类?(给定预测“not c ”,正确的概率是多少?)

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

计算方案

资料来源:Beleites,C.;Salzer, R. & Sergo, V. 使用部分类成员身份验证软分类模型:敏感性和 co 的扩展概念。应用于星形细胞瘤组织分级,Chemom Intell Lab Syst, 122, 12 - 22 (2013)。DOI: 10.1016/j.chemolab.2012.12.003

通过将数据减少到强制选择(分类)并且不记录是否有任何“密切联系”,除了秘密假设一个奇怪的效用/损失/成本函数并使用任意阈值之外,您还可以获得最小信息最小精度统计估计. 使用最大信息会好得多,其中包括类成员的概率而不是强制选择。

最简单的方法是根本不使用confusion_matrix,使用classification_report(),它会给你你所需要的一切,干杯......

编辑:
这是混淆矩阵()的格式:
[[TP,FN]
[FP,TN]]
分类报告给出了所有这些

下面是一个多类混淆矩阵的例子,假设我们的类标签是 A、B 和 C

应付账款 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,真阳性将是Actual A 预测为A,即10,该列中的其余两个单元格,无论是B 还是C,都会成为假阳性。所以

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

现在 B 类的准确率和召回率是 Pb 和 Rb。对于 B 类,真阳性是实际 B 预测为 B,即包含值 12 的单元格和该列中两个单元格的其余部分为假阳性,所以

铅 = 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

我希望它有帮助