计算精度和召回率

Posted

技术标签:

【中文标题】计算精度和召回率【英文标题】:Calculate Precision and Recall 【发布时间】:2012-11-26 11:07:21 【问题描述】:

我真的很困惑如何在使用 NB 分类器的监督机器学习算法中

例如1) 我有两个类 A,B2) 我有 10000 个文档,其中 2000 个用于训练样本集(class A=1000,class B=1000)3)现在在上面的训练样本集的基础上使用NB分类器对剩下的8000个文档进行分类4)现在将 5000 个文档分类到 A 类,将 3000 个文档分类到 B 类5) 现在如何计算 Precision 和 Recall?

请帮帮我..

谢谢

【问题讨论】:

【参考方案1】:

您好,您必须将结果分为四组 - 真正的 A 类(TA) - 正确分类为 A 类 错误的 A 类 (FA) - 错误地归入 A 类 真正的 B 类 (TB) - 正确分类为 B 类 错误的 B 类 (FB) - 错误地分类为 B 类

精度 = TA / (TA + FA) 召回 = TA / (TA + FB)

您可能还需要准确度和 F-measure:

准确度 = (TA + TB) / (TA + TB + FA + FB) f-measure = 2 * ((精度 * 召回率)/(精度 + 召回率))

更多:http://en.wikipedia.org/wiki/Precision_and_recall#Definition_.28classification_context.29

【讨论】:

Tom 谢谢回复。现在如何识别TA、FA、TB、FB?是我必须手动检查所有机密文件还是有什么方法? 您可以分别对每个类运行测试并计算正确分类和错误分类。例如,当您对标记为 A 的测试文档运行测试时,每个文档有两种可能的分类:如果分类为 A,则将 1 加到 TA,如果分类为 B,则将 1 加到 FB。对于 B 类似:如果分类为 A,则将 1 加到 FA,如果分类为 B,则将 1 加到 TB。我希望你明白。 :-) 当然,对于 A 类和 B 类,您不必将测试分为两次运行,您可以只运行一次,但我认为这更容易理解。 谢谢汤姆,我明白你真的拯救了我的一天..这让我感到困惑..现在我明白了解决方案..再次感谢.. Tom 我再次需要你的帮助。我想知道如何计算两个以上班级的 f-measure 您好,抱歉这么久才回复。您需要计算宏 F 度量。看看这篇文章:rushdishams.blogspot.cz/2011/08/…-Tom【参考方案2】:

为了清楚起见,让我解释一下。

假设视频中有 9 只狗和一些猫,图像处理算法告诉您场景中有 7 只狗,其中只有 4 只实际上是狗(真阳性),而 3 只是猫(假阳性)

精确度告诉我们在分类为狗的项目中,有多少实际上是狗

所以 精度 = 真阳性/(真阳性 + 假阳性) = 4/(4+3) = 4/7

虽然回忆可以说明狗的总数,但实际找到了多少只狗。

所以 召回 = 真阳性/总数 = 真阳性/(真阳性 + 假阴性) = 4/9


在你的问题中

您必须找到 A 类和 B 类的准确率和召回率

A类

True positive =(5000个分类A类文档中A类文档的数量)

误报 =(5000 个分类的 A 类文档中 B 类文档的数量)

从上面你可以找到Precision。

Recall = True positive/(测试时使用的 A 类文档的总数)

对 B 类重复上述操作以找到其精度和召回率。

【讨论】:

以上是关于计算精度和召回率的主要内容,如果未能解决你的问题,请参考以下文章

如何计算聚类中的精度和召回率?

python实现计算精度召回率和F1值

计算精度和召回率

如何计算两个嵌套数组的精度和召回率 [关闭]

在命名实体识别中计算精度和召回率

计算召回率和精度以评估 CBIR 系统