参考文献:http://blog.csdn.net/cleverlzc/article/details/39494957
Gephi 是一款网络分析领域的可视化处理软件,能够用于数据分析,连接分析,社交网络分析等。
标签传播算法LPA(Label Propagation Algorithm)最先是针对社区发现问题提出时的一种解决方案。
主要优势有:时间复杂度(近似线性),不须要事先知道社区数量。
主要算法流程:首先为每一个节点设置惟一标签,接着迭代依次更新各个节点,针对每一个节点,经过统计节点邻居的标签,选择标签数最多的标签更新该节点,若是最多便签数大于一,则从中随机选择一个标签更新该节点,直到收敛为止。
标签传播算法的节点标签更新策略主要分红两种,一种是同步更新,另外一种是已不更新。
其中同步更新:在执行第t次迭代更新时,仅依赖第t-1次更新后的标签集。
异步更新:在执行第t次迭代更新时,同时依赖t次迭代已经更新的标签集以及在t-1更新但t次迭代 中将来的及更新的标签集,异步更新策略更关心节点更新顺序,因此在异步更新过程当中,节点的 更新顺序采用随机选取的方式。
LPA算法适用于非重叠社区发现,针对重叠社区的发现问题,学者提出了COPRA(Community Overlapping Propagation Algorithm)算法。该算法提出全部节点能够同时属于V个社区,V是我的为设定的全局变量,很显然v的选择直接影响算法的效果,针对v的选择须要足够的先验知识,在真实的社区网络中,v的选择不能很好的被控制。算法
SLPA(Speaker-listener based information propagation algorithm)算法引入了Listener和Speaker两个形象化概念,在标签更新过程当中,待更新的节点咱们称为Listener,该节点的领域节点咱们称为Speaker,由于Listener最终的标签属性是根据这些Speaker所决定的。
在LPA中,把局域节点中最多标签数的标签赋予该节点,但这是一种更新规则,在SLPA中有多重更新策略规则。
基本算法流程和LPA相同,不一样点:在SLPA中为每一个节点设置了一个历史标签队列,该队列记录了t次迭代以来,该节点被赋予的标签。直到迭代结束后,对每一个节点的历史标签队列进行统计,标签频率超过一个给的的阈值ρ的全部标签就是该节点所属的多个社区。
SLPA算法中涉及一个重要参数ρ,若是ρ的取值为1,则SLPA算法退化成非重叠社区。网络
HANP(Hop Attenuation & Node Preference)算法,其基本思想为:
①为每一个标签引入score值来对该标签的传播能力进行评价,score值随着传播距离的增长而减弱。
score衰减规则:
其中δ 表示衰减因子(hop attenuation),δ 等于0的时候中止传播
②每一个节点经过领域节点更新标签时的规则δ 根据丰富(会综合考虑标签的传播能力score值、标签出现频率、标签的度等)
标签更新规则:app
BMLPA算法主要思想:
提出平衡归属系数概念,即对于每一个节点其归属的社区数不限,但对同一节点的标签局域平衡归属系数。异步
标签更新:待更新标签的领域标签均由一个二元组序列与之对应,二元组的第一项表示标签类别,第二项表示节点属于该类别的隶属度,对于每一个节点,全部隶属的之和为1。
①按照类别统计全部领域中的节点标签和隶属度,获得领域中的全部标签,和标签对应的隶属的之和。
②归一化A:将统计后的标签-隶属度序列中对大隶属度值除以全部标签的隶属度,得出一组隶属度最大值为1的标签-隶属度序列。
③筛选:将标签-隶属度序列中小于阈值ρ的标签剔除出去。
④标签更新:归一化B,为了保证最后获得标签-隶属度序列中全部隶属度和为一,将因此标签的隶属度除以全部标签隶属度之和。最后把获得标签-隶属度二元组赋值给待更新的标签。spa
Fast Unfolding算法
该算法是一种基于modularity optimization的启发式方法。
算法步骤,主要分红两个步骤:
①首先把每一个节点赋予一个惟一的社区,而后对全部的节点依次实行聚合,将待聚合的节点找到其全部的领域,依次把该节点聚合到领域节点中,计算modularity值,将节点最终聚合到modularity值最大的那个邻居节点中,反复迭代,直到全部节点都不能改善modularity值为止。
②将第一阶段生成的社区网络中的全部社区当作“节点”,由于新“节点”中包含多个节点,全部两个“节点”间须要有权重,权重采用两个社区间个边的权重总和。.net
DCLP(Distance-Control Label Propagation)算法,由HANP算法简化而来,只考虑标签传播过程当中的衰减因素,并使用距离dis_allowed代替δ,经过该参数能够有效控制标签的传播范围。
AM-DCLP算法对原图进行DCLP算法运算,但获得的某些社区规模较大时,则将它们对应的子图再继续执行DCLP算法。
两个控制参数:
maxC_allowed:社区规模的最大值
break_down_allowed:容许调用DCLP算法的基数
SDCLP算法:每次DCLP算法迭代后,对全部的社区进行检测,若社区的规模足够大,则终止迭代,不然继续迭代。
优势:及时的终止能够有效的防止大社区的出现,同时太小的社区经过迭代能够获得有利的发展。orm