社团检测算法初学

分为非重叠社团检测算法(传统社团检测算法)和重叠社团检测算法,非重叠检测算法的社团相互独立,

一 非重叠社团检测算法

1.1基于图分割的方法 K-L

        划分前需要指定划分社团大小,基于贪心策略,通过增益峰值分为两部分

步骤:1.随机分成两个社团;

           2.分别从两个社团各取一个节点,计算增益值,分别取出让两个节点增益值最大节点对,交换;

           3.每个节点只交换一次,所有节点重复执行第2步,

           4.指导函数增益值小于0,或者某一子图中所有节点都完成交换。

1.2基于谱分析的方法

       根据节点合适的特征值为样本,计算节点间相似性并完成节点拓扑结构的分析,实现社团划分。

基于拉普拉斯矩阵的算法步骤:

        1.D:度矩阵(节点度形成的对角矩阵),A:邻接矩阵,L:拉普拉斯矩阵,L=D-A

        2.L取最小的K个特征值及其关联的特征向量

        3.K个特征向量按序排列并按行标准化,构造新的特征向量矩阵

        4.聚类算法对特征向量矩阵聚类,划分社团

特点:1稀疏图,2需要合适的相似度图,否则不稳定,3存储大,可以通过动态增量采样发得到近似特征向量(依照数据不同的概率分布进行采样)

1.3 基于图动力学-随机游走策略

随机遍历节点,再由底到顶合并

MCL算法步骤:

        1.初始化邻接矩阵,添加自还

        2.按列标准化邻接矩阵->转移矩阵

        3.扩张操作:转移矩阵计算e次幂

        4.膨胀操作:转移矩阵中各个元素值计算r次幂

        5.迭代3,4至转移矩阵收敛

Infomap,Infohiemap,Scalable random walks,PPC

1.4基于层次划分

层次据类主要分为凝聚算法和分裂算法

        分裂算法自顶向下,开始整个网络作为一个社团开始,不断去除连接低相似度指标的边,最终形成一个树状图。切割树状图来发现社团。

        GN算法基于边介数(穿过最短路径的数量),每次迭代删除具有最大边介数的边,然后重新计算重复去除边,直到边没有剩余,特点:精度高,计算边介数复杂,使用小型网络

GN算法步骤:

        1.计算所有边的边介数

        2.去除边介数最大值关联的边

        3.重复计算边介数,迭代至所有边被去除

FastQ算法:开始每个节点作为一个社团,根据相似度指数合并最接近的一对社团,最终取最大模块度所对应的社团划分作为最终划分结果

FastQ算法步骤:

        1.每个节点作为一个社团,

        2.合并后计算模块度增量

        3.选择使模块度值增量最大或减量最小对应两个社团进行合并

        4.迭代2,3步至合并为一个社团

特点:稀疏网络效率低下->CNN

CNN算法步骤:

        1.每个节点作为一个社团,

        2.求模块度增量矩阵

        3.从最大堆中选取最大模块度增量,合并其关联的社团,更新模块度矩阵

        4.迭代2,3步至合并为一个社团

1.5基于信息传播(标签传播)

LPA算法:基本思想是利用已有标签的节点来影响未有标签的节点,步骤:

        1.初始化每个节点作为一个社团并制定唯一的标签

        2.更新所有节点的标签,选取其邻居节点数值最大对应的标签为当前节点的标签

        3.迭代2直到达到指定ji所有节点标签保持不变

        4.同种标签对应的节点隶属于同一社团

更新标签分为同步和异步两种,同步更新更加稳定,但容易在二分类网络中出现标签摇摆的问题,LPA算法采用的是异步更新。LPA算法具有近似线性的时间复杂度。

        缺点:迭代更新过程中算法随机选取节点更新标签,随机性会导致算法不稳定且多次运行后得到的结果不唯一。->模块度优化与标签传播思想结合->LPAm算法(时间复杂度O(mlogn方))->结合同步和异步模型的SSLPA算法

解决LPA算法随机性问题->CLPA-GNR算法(社团结构薄弱的网络中无法将社团结构成功划分)->基于CLPA-GNR的SSCLPA算法(基于Sorensen-Dice指数的相似性系数检测初始化社团,将已分配节点同步更新策略和未分配节点混合更新策略)

1.6基于模块度优化

        模拟退火,谱优化,主要用启发式的方法在NP-hard社团检测问题中找到模块度Q的最佳值,代表为BGLL,缺点会造成一个或多个社团很大,步骤:

        1.节点作为社团,社团数目即为节点数目

        2.依次尝试将当前处理的节点分配至其邻居节点所在的社团,将节点分配至模块度增量最大的邻居社团,否则当前节点保持不变

        3.迭代2,直到节点所属社团保持稳定

        4.将属于同一社团的节点作为统一个体,刷新网络整体结构

        5.迭代2,直到网络模块度保持不变

SLM算法基于BGLL, 3)完成后,划分结果再次使用BGLL算法使社团规模变得更小,4)将所得到的小社团作为网络中的节点再构建新网络,SLM算法通过划分社团或节点的交换不断寻找可以增加模块度的机会,执行更多的迭代划分获得社团结构质量的进一步提升。

二 重叠社团检测算你发

2.1基于派系过滤的方法

CPM算法步骤:

        1.初始化k代表派系大小,网络中搜索大小k的派系形成矩阵,矩阵的元素代表派系间(社团间)的公共节点数

        2.矩阵中非对角线元素小于k-1,对角线元素小于k的所有项设为0,其余元素设为1,修改后对角线1代表派系,非对角线1代表临近社团,从而得到社团划分

 缺点:不能对社团之外的节点划分社团->CPMw算法,SCP算法,使用一种序列化处理方法,可以用于有权和无权网络

2.2基于边聚类的方法

通过对边进行社团划分来实现对重叠社团的检测,算法步骤:

        1.初始化每条边作为一个社团,

        2.采用jaccard系数计算相邻边之间的链路相似性,形成矩阵

        3.根据矩阵进行层次据类,得到树状图,分区密度度量来确定最佳社团检测结果

缺点,忽略了非相邻边之间的相似性->替换LC中相似性系数,基于扩展链路聚类的ELC算法(该算法计算扩展链路相似性ELS,得到变换矩阵,使用扩展模块度EQ指标作为切割层次划分树的依据,从而找到最佳的划分结果)

2.3基于层次划分的方法

        CONGA再GN基础上改进,提出节点分裂介数(若节点被分裂为两个新的节点,节点分裂介数为网络中所有节点对最短路径通过这两个节点的数目)的概念,用以代替GN算法中的边介数,算法步骤:

        1.计算边和节点介数和分裂介数

        2.删除分裂介数最大的边,保留其余的边和节点

        3.再次计算边介数和分裂介数

        4.重复2,3直到无边

缺点:如果一个网络的节点分裂介数较低,时间复杂度O(n三次方)->Peacock,通过预设即将分裂节点的范围,通过迭代寻找网络中具有最大分裂介数的节点,使其分裂,当该值降低到阈值之外时,算法结束。->CONGO,加入短路径计算,即算法首先得到短路径的数量,依据短路径数量指导网络中边介数和分裂介数的计算,短路径数量e不可以超过算法中参数h。

2.4基于局部扩张

        基于适应度函数的LFM算法

算法步骤:

        1.随机寻去一个节点A,检测包含A的自然社团

        2.随机选取一个尚未分配给任何社团的节点B,检测包含B的自然社团,检测过程中不管其邻接点是否属于其他社团

        3.迭代2,直到所有节点你都至少被分配到一个社团

缺点:重复计算适应度值->GCE,将不同社团假定为种子节点,采用贪婪策略和局部适应度指标对种子进行扩展,NDOCD,利用节点聚类指标来识别网络中的社团,并对这些社团进行以删除边的方式来迭代的分割网络

2.5基于信息传播

        LPA基于信息传播,但无法检测重叠社团->COPRA提出节点携带信息(C,B)C表示社团,B表示该节点位于社团C中隶属度,任意节点B隶属度之和为1,步骤:

        1.初始化,节点作为社团,每个节点隶属度为1

        2.节点根据相邻节点传递的标签决定赋予该节点标签的内容,选取所占标签比例较高者,当该值不仅有一个时,任选v个标签更新,v为算法初始时自定义的参数

        3.直到算法运行结果稳定时终止,否则返回2

BMLPA取消了COPRA中对所属社团数的限制,SLPA算法是对LPA算法的扩展,算法为每个节点建立一个标签存储列表,长度由给定的最大迭代次数限制,标签传播过程中,对列表进行处理,列表中满足所设定阈值范围内的标签进行保留,其余标签删除,最终得到每个节点的标签列表,若列表标签有多个,该节点是重叠节点,->HLPA算法使用混合更新提高标签传播效率,同时避免出现再二分图或近似二分图中的标签摇摆现象,还基于RDD数据结构Dpark实现,更易并行化。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值