社区发现算法简介
社区发现的算法多种思路,比较常见的有两种:一种是分离的思路,就是找出社区之间的边,把这些边从图中移除;另一种是聚合思路,将联系紧密的节点聚合为一个社区,并通过优化某个相关变量的函数来实现聚合。 前人已在两个思路上有了大量的研究,而根据这两类算法的结果看,聚合的思路比分离思路好,且算法的效率也比较高。因此,聚合算法吸引了很多学者做了大量相关研究,逐步形成了现在的社区发现算法。比如密歇根大学的M.E.J.Newman和康奈尔大学的M.Girvan,他们在2003年提出了一个基于模块属性的测量方法。他们在算法中引入了一个变量【模块度】,用于衡量社区划分结果的合理性。其原理是用某种划分结果的模块内聚性与随机划分结果的内聚性的差异,对划分结果进行评估,找到模块内聚性最优的划分。虽然寻找最优随机划分往往非常困难,但这个思路给大家指引了优化方向。模块度的思路对后来的社区发现算法有很重要的影响,很多有影响的算法都是基于该特性进行算法设计的。 2008年,以比利时鲁汶大学的Vincent D.Blondel为主的几位学者,提出了基于模块度的一个快速算法:Louvain算法。该算法可以快速处理具有数以亿计节点的网络,用模块度度对社区划分的质量进行评估
2.模块度

上述公式简化:


Louvain算法是一种快速的社区发现算法,基于模块度增益进行节点合并。它通过两个阶段不断优化网络结构:节点合并与社区聚合,适用于大规模图的处理。尽管存在可能导致过度合并的问题,但可通过过滤弱边、调整模块度增益阈值或使用分层Louvain等方法来解决。
最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



