基于边权重的图聚类

Posted

技术标签:

【中文标题】基于边权重的图聚类【英文标题】:Graph Clustering based on the edge weights 【发布时间】:2021-03-28 07:41:23 【问题描述】:

我使用 networkx 构建了一个图表,它是一个社交网络,以人为节点,消息频率为边权重。我想把这个网络聚集到不同的人群中。经常互相发信息的人往往在同一组中。我该怎么做?我应该使用哪种聚类算法?另外,如何像树状图一样可视化分组?

提前致谢! :D P.S.:我尝试过使用 python-louvain 进行分区,但这会产生不准确的结果,例如即使他们的消息传递频率非常高,它也会将两个用户划分为不同的组

【问题讨论】:

【参考方案1】:

我尝试过使用 python-louvain 进行分区,但结果不准确[...]

Louvain 方法并不完美,也没有完美的方法,它们始终取决于您要达到的目标(参见@​​987654321@ 的结论)。

[...] 就像它会将两个用户分成不同的组,即使他们的消息频率非常高。

看来这个用户可能属于多个社区...也许可以尝试一种允许重叠社区的分区方法,例如K-Clique。这种划分方法允许节点属于多个社区。​​p>

算法:

以下是我发现的一些替代算法:

    networkX 包中已经包含许多算法(here)。我建议girvan_newman但这需要大量的计算能力...

    CDLib 包还具有许多用于 networkX(here) 的算法,包括一些允许重叠社区的算法。另外,检查leiden algorithm,您可能更喜欢它而不是louvain,它应该更好(根据他们的paper)

    我仍然建议使用python-louvain,用于清晰的社区

祝你好运!

【讨论】:

编辑了我的答案,看看有没有帮助!

以上是关于基于边权重的图聚类的主要内容,如果未能解决你的问题,请参考以下文章

机器学习--谱聚类从初始到应用

图聚类算法打开深度神经网络黑箱:解密权重结构

JUNG:我们如何根据顶点的一些属性进行图聚类?

解读人:刘佳维,Spectral Clustering Improves Label-Free Quanti?cation of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的

图聚类算法SCAN: A Structural Clustering Algorithm for Networks

用scikit-learn学习谱聚类