准确率和召回率之间的混淆

数据挖掘 分类 多类分类 公制
2022-02-10 07:37:53

我有一个机器学习模型,它尝试使用语料库对二进制文件中的函数进行指纹识别。输入二进制文件后的最终输出是一个表,该表在二进制函数和语料库函数之间具有一对一的映射,如下所示: 在此处输入图像描述

从名称可以看出,其中一些功能是正确的,而另一些则不正确。有没有办法计算上述结果的精度和召回率?我知道,如果我正在执行其他 ML 任务(例如图像分类),那么精确度和召回率是有意义的。使用混淆矩阵将有助于轻松计算这两个指标。但是,我很困惑,觉得我不能做这样的措施,因为它只是一对一的映射,要么是真的要么是假的。如果精度和召回率没有意义,我可以使用其他指标来评估模型吗?谢谢!

1个回答

首先,准确率和召回率并不是图像分类所特有的;只要有两个不同的“阳性”和“阴性”类别,它们就相关(例如,当您测试一封电子邮件的“垃圾邮件/非垃圾邮件”,或测试“有病毒/没有病毒”的血液样本时) )。您可以在 Cross Validated
上阅读有关此问题的更多信息,但总而言之 - 如果测试表明样本为阳性,则精度是样本为阳性的概率,而召回率是测试将阳性样本报告为阳性的概率. 误报会影响您的准确率,而误报会影响您的召回率。

现在,您的任务似乎是多类分类之一 - 从您的示例中至少有 17 个类。我不会为此进行精确/召回-您只能对成对的类进行成对的操作。但是,您可以绘制CxC混淆矩阵(其中 C 是类数),并调查您的模型容易遗漏的地方。SKLearn (链接) 中有一个实现。

如果您需要一个单一数字指标,我会从准确性开始(并从那里发展)。在核王的评论之后,我还建议查看 Cohen 的 Kappa(请参阅Cross Validated的解释)以更好地解释类不平衡。

要阅读有关多类分类的更多信息,请参阅此问题我还推荐这篇关于走向数据科学的博文