Sas*_*a88 4 evaluation modularity ranking detection
我想在R中评估和比较我的社区检测算法的结果。我的算法不允许重叠,并且有一些节点没有被处理。例如,对于 Zachary Karate 俱乐部,我有 1 个节点未治疗。我找到了很多指标(NMI、ARI、Modulaity(Q)、纯度、Rank Index...),但我不知道哪些是最好的。目前,我正在使用模块化、纯度和排名索引。
这些选择的评估指标是否足够?
例如,对于排名索引为 RI(P,R)= (a+d)/(a+b+c+d),其中 a、b、c 和 d 分别是位于根据 P 和 R 在同一社区中,根据 P 在同一社区中但根据 R 在不同社区中,在 P 给定的不同社区中但根据 R 给定的同一社区中,以及根据 P 和 R 两者在不同社区中R, 且 P = {p1, p2, . 。。, pk} 是应用于图 G =< V,E > 和 R = {r1, r2,... 的社区检测算法的输出。。。, rn} 是真实的社区结构。
那么,如果我处理一个大图,我该如何计算这些值?在哪里可以找到R(真实的社区结构)?
您混淆了两种类型的度量:内部标准和外部标准,如为聚类问题定义的(请参阅本页)。
没有“最佳”衡量标准:它们都是不同的,并且依赖于如何量化社区检测算法性能的不同概念。一个更相关的问题是:哪些措施适合您的情况?
事实上,您列出的所有措施都需要对节点集进行分区。您提到您的算法忽略了某些节点,因此这可能是一个问题。基本的解决方法包括考虑每个被忽略的节点构成其自己的社区。或者,为重叠社区结构定义的某些措施能够处理这种情况。
另一个重要的一点是您用于测试算法的数据。您有这些数据的实际社区结构吗?如果不是,那么您根本无法使用外部标准。
请注意,大多数外部标准认为社区结构只是节点集的一个分区(在数学意义上)。因此,它们依赖于参考分区和估计分区的比较。这是因为它们都起源于聚类分析领域。问题是他们完全没有考虑到网络链接。然而,社区结构不仅仅是节点集的一个分区:在这个分区上分布链接的方式非常重要。因此,您可能希望以更定性的方式评估社区结构,例如通过比较检测到的社区的拓扑属性(请参阅Orman'12)。您也可以更改现有的措施,使它们考虑链接(请参阅Labatut'13)。并不是我特别想引用自己的话,但这些论文似乎很相关。
关于这些措施的具体处理,您可能需要查看用于执行社区检测的工具的文档:其中一些与性能措施捆绑在一起。例如,如果您使用 igraph,则有一个专门用于该功能的函数。