当前位置: 首页 > 知识库问答 >
问题:

社区检测算法的评价指标

曹沛
2023-03-14

我想评估和比较我的社区检测算法在R中的结果。我的算法不允许重叠,并且有一些节点没有被处理。例如,对于Zachary空手道俱乐部,我有1个节点未处理。我发现了很多指标(NMI、ARI、模块化(Q)、纯度、排名指数…),我不知道哪一个是最好的。目前,我正在使用模块化、纯度和排名指数。

这些选择的评估指标是否足够?

例如,对于秩指数是RI(P,R)=(a d)/(a b c d),其中a、b、c和d是根据P和R分别位于同一社区中、根据P在同一社区中但根据R在不同社区中、根据P在不同社区中但根据R在同一社区中以及根据P和R在不同社区中的节点对的数目,P={p1,p2,…,pk}是应用于图G的社区检测算法的输出=

因此,如果我处理一个大型图,我如何计算这些值?我在哪里可以找到R(真正的社区结构)?

共有1个答案

何涵衍
2023-03-14

您混淆了两种类型的度量:为集群问题定义的内部和外部标准(请参阅本页)。

  • 内部标准:盲目评估检测到的群落结构的质量。这意味着您没有任何可以比较估计结构的参考结构。例如:模块化、电导...
  • 外部标准:您将估计的群落结构与参考群落结构(又名。地面真相、黄金标准等)进行比较。例如:NMI、(A)RI、纯度...

没有“最佳”衡量标准:它们都是不同的,并且依赖于如何量化社区检测算法的性能的不同概念。一个更相关的问题是:哪些措施适合您的情况?

实际上,您列出的度量值都需要对节点集进行分区。您提到的算法忽略了某些节点,因此这可能是一个问题。一个基本的解决方法是考虑每个被忽略的节点构成自己的社区。或者,为重叠社区结构定义的某些措施能够处理这种情况。

另一个重要的点是用于测试算法的数据。您是否有这些数据的实际社区结构?如果没有,则根本不能使用外部标准。

请注意,大多数外部标准都认为社区结构只是节点集的一个分区(在数学意义上)。因此,它们依赖于参考分区和估计分区的比较。这是因为它们都来自聚类分析领域。问题是他们完全没有考虑到网络链接。然而,社区结构不仅仅是节点集的分区:链接在该分区上的分布方式非常重要。因此,您可能希望以更定性的方式评估社区结构,例如通过比较检测到的社区的拓扑属性(请参见Orman'12)。您也可以更改现有度量,使其考虑链接(请参见Labatut'13)。我并不是特别想引用我自己的话,但这些文件似乎很相关。

关于这些度量值的具体处理,您可能需要查看用于执行社区检测的工具的留档:其中一些与性能度量值捆绑在一起。例如,如果您使用igraph,则有一个专门用于该功能的函数。

 类似资料:
  • 以下是我的数据集演示: 由非常大的相关帐户的Twitter帐户追随者、该追随者的追随者以及这些追随者的追随者组成的大型社交网络,在每次迭代中清理机器人帐户、私人帐户等。 总节点:约500,000 总连接:95百万 4个节点有超过300万个连接 567个节点有超过100,000个连接 一半的数据集有3个或更少的连接 也就是说,我想清理这个网络,以便在进一步聚集子社区之前,从原始的初始图中获得“最佳”

  • 我有一个网络是一个图形网络,它是Email-Eu网络,在这里可用。 该数据集具有实际数据集,这是一个由大约1005个节点组成的图,其边缘形成了这个巨大的图。它还具有节点及其相应社区(部门)的地面真相标签。这些节点中的每一个都属于42个部门中的一个。 我想在图上运行一个社区检测算法,为每个节点找到相应的部门。我的主要目标是找到最大社区中的节点。 因此,首先我需要找到前42个部门(社区),然后在其中最

  • 用户的评价类型可以分为显式评价和隐式评价。显式评价指的是用户明确地给出对物品的评价,最常见的例子是Pandora和YouTube上的“喜欢”和“不喜欢”按钮: 以及亚马逊的星级系统: 隐式评价 所谓隐式评价,就是我们不让用户明确给出对物品的评价,而是通过观察他们的行为来获得偏好信息。示例之一是记录用户在纽约时报网上的点击记录。 经过几周的观察之后,我们就可以为用户刻画出一个合理的模型了——她不喜欢

  • 本文向大家介绍Inception Score 评价指标介绍相关面试题,主要包含被问及Inception Score 评价指标介绍时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 定义: 推导出上式的意义: 故要使得生成图像的inception score高,就需要 1.最大化H(y);也就是对于输入的样本,通过inception_v3模型后的类别要均衡,衡量模式坍塌。 2.最小化H(y|x)

  • 我试图在Java中实现上述社区检测算法,虽然我可以访问C代码和原始论文——但我根本无法使其工作。我的主要问题是我不明白代码的目的——即算法是如何工作的。实际上,我的代码陷入了的无限循环中,列表似乎在每次迭代中都变得越来越大(正如我对代码的期望),但的值总是返回相同的值。 我测试这个的图相当大(300,000个节点,650,000条边)。我用于实现的原始代码来自SNAP库(https://githu

  • 我正在研究网络中的检测社区。 我正在使用networkx和Python,我需要实现此算法:http://arxiv.org/pdf/0803.0476.pdf 这就是我试图解决它的方法:首先我制作列表列表,其中包含与图中节点一样多的列表(社区),以便我可以通过索引找到社区。然后对于每个节点,我找到它们的邻居并计算模块化增益,如下所示: 在哪里 然后我找到最大q并将节点I移动到新社区。但是这不起作用