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

时间:2009-03-18 11:40:38

标签: cluster-analysis precision-recall

我真的很困惑如何在群集应用程序中计算精度和召回率。

我有以下情况:

给定两组A和B.通过对每个元素使用唯一键,我可以确定A和B中的哪些元素匹配。我想根据功能对这些元素进行聚类(当然不使用唯一键)。

我正在进行聚类,但我不确定如何计算精度和召回率。根据文章“用于群集检索的扩展性能图”(http://staff.science.uva.nl/~nicu/publications/CVPR01_nies.pdf)的公式是:

p = precision =相关检索项目/检索项目和 r =召回=相关检索项目/相关项目

我真的不知道哪些元素属于哪个类别。

到目前为止,我在群集中检查了我有多少匹配对(使用唯一键)。这已经是精确还是召回?如果是这样,那是哪一个,我怎么能计算另一个呢?

更新:我刚刚在http://mtg.upf.edu/files/publications/unsuperf.pdf找到另一篇题为“用于评估具有未确定簇数的无监督聚类的F测量”的论文。

7 个答案:

答案 0 :(得分:8)

我想你会发现维基百科有一个有用的article on precision and recall。简而言之:

精确度=真阳性/(真阳性+误报)

Recall = true positives /(true positivies + false negatives)

答案 1 :(得分:8)

我在访问聚类方法时所做的一些研究中,我一直在使用其他一些集群有效性测量。如果您有一个标有类的数据集(监督聚类),您可以使用上面提到的精度和召回,或纯度和熵。

群集的纯度=最频繁类别的出现次数/群集的大小(这应该很高)

群集的熵=衡量群集的分散程度(这应该是低的)

如果您没有类标签(无监督聚类),则内部和相互之间的相似性是很好的衡量标准。

单个簇的簇内相似性=簇内所有对的平均余弦相似度(这应该很高)

单个集群的集群间相似性=一个集群中所有项目的平均余弦sim与每个其他集群中的所有项目相比(这应该很低)

本文对所有这四项措施都有一些很好的描述。 http://glaros.dtc.umn.edu/gkhome/fetch/papers/edcICAIL05.pdf

与无人监督的F-measure有很好的联系,我现在正在研究它。

答案 2 :(得分:2)

我对这个问题的看法是:

A组和B组中的一组是“正”组。让我们假设A是正面的

考虑到群集中A的元素

  1. B的匹配元素在同一个集群中。这是一个真正的积极的
  2. B的匹配元素不在同一个集群中。这是假阴性
  3. B的非匹配元素在同一个集群中。是假阳性
  4. B的非匹配元素不在同一个集群中。是一个真正的否定。
  5. 然后使用

    精确度=真阳性/(真阳性+误报)

    Recall = true positives /(true positivies + false negatives) 正如某人提到的那样

答案 3 :(得分:1)

我认为您的定义存在问题。

精确度和召回率适用于分类问题,基本上是两个群集问题。如果你聚集成“好物品”(=检索物品)和“坏物品”(=未检索物品)之类的东西,那么你的定义就有意义了。

在你的情况下,你计算了所有项目中正确聚类的百分比,这有点像精确,但不是真的,因为正如我所说的定义不适用。

答案 4 :(得分:1)

有关评估聚类算法的方法,请参阅“信息检索简介”,第18章(脂肪聚类)。 http://nlp.stanford.edu/IR-book/html/htmledition/flat-clustering-1.html

本书的这一部分也可能有用,因为它讨论了精度和召回等指标: http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-unranked-retrieval-sets-1.html

答案 5 :(得分:1)

精确和回忆的问题在于它们通常要求您对“真实”标签有所了解,而在许多情况下(在您的描述中)您不知道标签,但您知道分区进行比较。我建议调整后的兰德指数

http://en.wikipedia.org/wiki/Rand_index

答案 6 :(得分:0)

如果您将其中一个集合(例如A)视为黄金集群而将另一个集合(B)视为集群过程的输出,则(精确)精度和召回值可以估算为:

  

精度=(A和B共有的元素数量)/(B中的元素数量)

     

召回=(A和B共有的元素数量)/(A中的元素数量)

从这些标准F度量也可以估算。