繁体   English   中英

比较两个标签向量相同的百分比

[英]Compare how to how much percentage two label-vectors are the same

背景

我有两种要比较的聚类方法。 我用一种方法将数据对象聚类,然后用另一种方法聚类,并为这两种方法标记对象。 现在,我想比较第二种方法与第一种方法标记数据对象的百分比。

问题

我有带有两种类型标签的数据对象。 标签是没有任何内在含义的整数,只有具有相同标签(每种标签类型)的那些数据对象属于同一组。 我想知道两个标签的百分比相同。

例如(伪代码,其中==为元素方式):

>>> label1 = [1,1,1,1,2,2,2,3,3,3,3,3,4,4]
>>> label2 = [1,1,2,2,2,2,2,2,2,3,3,4,4,4]
>>> correctness = sum_of_true(label1 == label2) / 14
correctness: 9 / 14 = 0.6428571

但是,标签可能使用的方式不同。 例如

>>> label1 = [1,1,1,1,2,2,2,3,3,3,3,3,4,4]
>>> label2 = [2,2,2,2,1,1,1,4,4,4,4,4,3,3]

标记相同,正确性应为1.0

为此,我需要重命名label2,以使标签尽可能类似于label1。

低效的解决方案

一种低效的解决方案是简单地尝试在所有可能的解决方案中重命名label2 ,为每个重命名正确性进行计算,如示例中的上述,并采用具有最佳正确性的解决方案。 但是,可能的重命名数量是标签数量的排列。 这可能是一个非常庞大的数字,并且使这种方法无法使用。

其他解决方案

我知道标准化的互信息(nmi)作为比较标签的一种方法,但这不是我想要的。 原因是,首先,nmi不是线性的;其次,它难以理解和交流;其次,我只是想要其他东西;-)-在这种情况下,要知道相同标记数据对象的数量(〜百分比)。 我想要其他原因的原因与标签的后续应用有关。

所以举个例子

>>> label1 = [1,1,1,1]
>>> label2 = [1,2,3,4]

我仍然希望这是正确的1/4 我不想在这里讨论这是否明智。 在我以后的应用程序中,这就是我所需要的。

允许合并

此外,还有一个问题,即对于label1label2 ,标签的数量可能会有所不同。 对于我的应用程序,宽大地对待这一点可能会很有用,因为它允许将标签合并到任一侧。 例如

>>> label1 = [1,1,1,1]
>>> label2 = [1,2,3,4]

将成为正确性1 ,如果是朝合并宽松label2 ,而这将是0.5

>>> label1 = [1,1,2,2]
>>> label2 = [1,2,3,4]

如何有效地计算正确性

  1. 不允许合并。
  2. 合并到允许的第一个标签中。
  3. 允许合并第二个标签。

当然,对于2.和3.解决方案将是相同的。

笔记

  • 我正在使用python实现。
  • 如果您知道的话,请告诉我该问题使用哪些标签。 我不确定。

有几种公认的方法可以评估两个聚类结果的相似性。 他们已经解决了对齐问题,如果簇数变化,对齐问题将变得更加严重。

您可能应该只使用其中之一,尤其是:

  1. 兰德指数
  2. 调整后的兰德指数
  3. 杰卡德
  4. 福克斯-马洛斯指数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM