我有一个机器学习模型,它试图用语料库对二进制文件中的功能进行指纹识别。输入二进制文件的最后输出是一个表,其中包含二进制函数和语料库函数之间的一对一映射,如下所示:

从名称中可以看出,有些函数是正确的,而另一些则是不正确的。是否有方法计算上述结果的精确性和召回率?我明白,如果我正在执行其他ML任务,例如图像分类,那么精确性和回忆是有意义的。使用混淆矩阵将有助于轻松地计算这两个指标。然而,我感到困惑,并认为我不能采取这样的措施,因为这只是一对一的映射,要么是对的,要么是假的。如果精确性和召回没有意义,我还可以使用其他指标来评估模型吗?谢谢!
发布于 2020-07-13 06:02:27
首先,精确性和召回并不是图像分类所特有的;在有两个不同的“正”类和“负面”类(例如,当您测试电子邮件中是否有“垃圾邮件/非垃圾邮件”,或者"has病毒/没有病毒“的血样时,它们都是相关的)。
你可以在这个关于交叉验证的问题上读到更多信息,但总的来说,精确性是指如果测试表明样本呈阳性的概率,而回忆是阳性样本在测试中被报告为阳性的概率。
假阳性会影响你的精确性,而假阴性会影响你的回忆。
现在,您的任务似乎是一个多类分类-至少有17个类,从您的例子。我不会对此进行精确/回忆--你只能对成对的类做成对的。但是,您可以绘制一个CxC混淆矩阵(其中C是类的数量),并调查模型往往遗漏的地方。在SKLearn (链接)中有一个实现。
如果你需要一个单数的度量,我会从精确开始(然后从那里开始)。继核王的评论之后,我还建议看看科恩的Kappa (参见交叉验证上的解释),以更好地解释阶级失衡。
若要阅读有关多类分类的更多信息,请参见这个问题。我也推荐这篇关于数据科学的博文
https://datascience.stackexchange.com/questions/77623
复制相似问题