我有许多不同的聚类过程,每个过程都将一个集合分成多个带标签的分区。
e.g。给定{1,2,3,4,5,6}
集合,我可能会收集如下的标记:
A = [1,1,2,2,3,3]
B = [3,3,1,1,2,2]
C = [1,1,1,1,2,2]
D = [1,2,3,3,4,4]
此处A
和B
彼此100%同意,因为可以在标签之间创建1-1映射(a.k.a.置换),将A转换为B,反之亦然。这样的映射可能看起来像{1:3, 2:1, 3:2}
C
也有一些协议,因为A
和B
可以使用C
{1:1, 2:1, 3:2}
将{1}}映射到A->C
映射,或{3:1, 1:1, 2:2}
映射的B->C
。或者,也可以从A->B->C
链接映射。
因此,每个标签方案对该集合进行划分,并且在某些情况下100%彼此同意,但不同意共同的标签方案。
D是一个稍微不同的情况,因为D
包含更多数量的分区,所以无法映射到它(但如果需要,可以从D向下映射到A或C)
可以使用像sklearn的normalized_mutual_info_score
之类的东西来衡量分区之间的相似性,但我想要做的是确定可以执行以标准化标签方案的最佳标签映射。 “最佳”是所有分区共享一组公共标签所需的映射。
如果分区将集合划分为固定的“k”组,我发现一种方法可以使用分区作为特征集和k-means聚类在这组特征上 - 但是当给定群集中的分区数不同时,这不起作用。
由于normalized_mutual_info_score
能够“透视”标签的差异,有没有办法确定执行相同任务的映射,标准化不同的labellings以便更密切地分析它们?
答案 0 :(得分:1)
匈牙利算法是找到最佳映射的首选方法。
它解决了运输问题。每个集群都是供应商,每个标签都是消费者。当将每个供应商与一个消费者匹配时,它可以最大化流量。