社团发现算法综述

来源:互联网 发布:python工作流引擎 编辑:程序博客网 时间:2024/04/28 01:18
近期想对社区发现领域进行一下简单研究,看到一篇不错的文章,文章是根据国防科大骆志刚教授的论文《复杂网络社团发现算法研究新进展》整理的,主要是对社区发现的一些算法进行简单分析。

一、基于模块度优化的社团发现算法,也就是优化模块度Q值的一部分算法。Q值是由Newman在2004年的论文"Fast Algorithm for Dectecting Community Structure in Networks"中提出的(也就是FN算法)。通过优化Q值来提高模块度是这类算法的主要思路,在此基础上,本文又划分了三个类别:①采用聚合思想,也就是分层聚类中的自底向上的作法。典型算法有Newman快速算法(FN算法)、CNM算法(Finding Local Community Structure in Networks)和MSG-MV算法(Multistep Greedy Algorithm Identifies Community Structure in Real-World and Computer-Generated Networks)等。②采用分裂思想,也就是分层聚类中自顶向下的方法。代表当然就是Newman的GN算法,但是GN的复杂度实在是高了些,所以Newman之后提出的一种谱方法(Modularity and Community Structure in Networks),吐槽一句Newman真的是这方面的大牛啊。。。再吐槽一句,Newman那本800多大洋的书真是想买但真是贵啊!③直接寻优法,这类算法的两个代表EO算法(Community Detection in Complex Networks Using External optimization)和整数规划方法我还都没有看过,但是一些基于遗传算法和蚁群的智能划分方法也属于此类。但是在2007年的论文"Resolution Limit in Community"中认为基于Q值的优化方法无法处理粒度小于一定程度的网络,虽然后续跟进了一些优化的算法,但是此类方法在处理真实网络时还是很难反映真实的社团结构。



二、基于谱分析的社团发现算法,这类算法的普遍方法是将节点对应的矩阵特征分量看成空间坐标,将网络节点映射到多维向量空间去,运用传统的聚类算法将它们聚集成社团。这种方法不可避免的要计算矩阵的特征值,开销很大,但是因为能直接使用很多传统的向量聚类的成果,灵活性很高。



三、基于信息论的社团发现算法,Rosvall的两篇论文,"An Information-theoretic Framework for Resolving Community Structure in Complex Networks"和"Maps of Random Walks on Complex Networks Reveal Community Structure"分别运用了模拟退火优化算法和随机游走的有效编码方式。09年的论文"Community Detection Algorithms:A Comparative Analysis"已经测试表明该方法是目前非重叠社团发现算法中准确度最高的。



四、基于标号传播的社团发现算法,Raghavan基于网络的边很多时候代表信息的传播这一思想提出的LPA算法(Near Linear Time Algorithmto Detect Community Structures in Large-scale Networks)。LPA算法首先为每个节点指派唯一标号, 在每一步迭代中, 每个节点将自身标号更新为其邻节点出现次数最多的标号,如果存在多个相同的最多标号, 则随机选择一个作为更新值,若干次迭代后密集相连的节点会收敛于同一标号,最终,具有相同标号的节点归为一个社团。该算法时间复杂度为O(m),收敛速度非常快。"Towards Rea-l time Community Detection in LargeNetworks"中改进了标号更新规则,进一步降低了计算开销。



对于非重叠社团的划分算法已经相对成熟,但是真实世界的网络和这种理想状态相去甚远,经常有某些节点同时具有多个社区的特性,属于多个社区,在这种状况之下,对于重叠社区的划分明显更有意义更贴近真实世界,也因此成为近年来新的研究热点。相应的,本文将重叠社区划分算法分为以下几类:



一、基于团渗透改进的重叠社区发现算法,Palla的论文"Uncovering the Overlapping Community Structure of Complex Networks in Nature and Society"中提出的CPM算法是第一个能发现重叠社区的算法,CPM算法就不展开讨论了,如果是研究重叠社区发现算法的话肯定是看过的。值得一提的是Kumpula在前人基础上提出的SCP算法(Sequential Algorithm for Fast Clique Percolation)较大的提升了团渗透算法的速度。该类算法的问题这篇文章虽然也是简单的一说,但是比之前某些人简单的用一个K值不好确定来敷衍了事要来的有意义的多:基于团渗透思想的算法需要以团为基本单元来发现重叠,这对于很多真实网络尤其是稀疏网络而言,限制条件过于严格,只能发现少量的重叠社团(Identification of Functional Modules in a PPI Network By Clique Percolation Clustering)。



(后面还有几个类别,我觉得因为一个算法而划分为一个分类,实在是没有介绍的必要,当然,也部分因为我觉得那几个我实在是理解不能)



二、基于种子扩散思想的重叠社区发现算法,此类算法的基本思想是以具有某种特征的子网络为种子,通过合并、扩展等操作向邻接节点扩展,直至获得评价函数最大的社团。Lancichinetti 等提出以若干个节点为种子,通过扩展形成对整个网络的覆盖, 即LMF算法(Detecting the Overlapping and Hierarchical Community Structure in Complex Networks)。



三、基于混合概率模型的重叠社区发现,前述的很多算法都是自己给出了社团结构的定义然后相应给出算法,但这样的划分必须对社团先做出符合结构定义的假设。针对此问题,Newman等建立了社团结构的混合概率模型(Mixture Models and Exploratory Analysis in Networks),以概率方法对复杂网络的社团结构进行探索,以求得期望最大的社团结构,从而避开社团定义的问题。通过该算法能够识别重叠社团,并得到隶属程度大小。然而,该方法基于EM算法来估计未知参数,收敛速度较慢,计算复杂度较高, 一定程度上制约了算法的应用规模。



四、基于边聚类的重叠社团发现,这类方法以边为研究对象,推荐两篇论文:LineGraphs, LinkPartitions, and Overlapping Communities和Link Communities Reveal  Multiscale  Complexity in Networks.前者通过转换网络,可以用非重叠社区的方法提示网络的重叠社团,后者解决重叠性与层次性冲突,提出了变社团。



遗憾的是,文章没有介绍动态变化的复杂网络。
阅读全文
0 0
原创粉丝点击