一种新的基于标签传播的重叠社区发现算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种新的基于标签传播的重叠社区发现算法
摘要摘要:发现高质量的社区是社区网络问题的研究热点。目前,社区发现算法大多针对非重叠社区,重叠社区发现算法较少。基于标签传播的算法是现有重叠社区发现算法中的一类,其中COPRA为典型算法。尽管该算法具有接近线性的时间复杂度,但存在随机因素,结果不稳定,产生的社区结构存在一定差异。为此,提出一种新的基于标签传播的社区发现算法,实验表明该算法在复杂度相近的情况下能明显提高所发现社区的质量,且具有较好的稳定性。
关键词关键词:社区发现;重叠社区;标签传播;稳定性
DOIDOI:10.11907/rjdk.1431038
中图分类号:TP312
文献标识码:A文章编号
文章编号:16727800(2015)004005904
1重叠社区及其发现算法
近年来,复杂网络研究受到广泛关注,主要涉及系统科学、统计物理学、社会科学、生物学等多个领域[1]。随着通信和互联网技术的快速发展,人们发现众多网络都存在社区结构[2]这一特征。所谓社区结构,简单来说,就是网络中的
节点存在分组,一般组内的边连接比较稠密,而组间的边连接比较稀疏。社区结构在一定程度上可以反映出真实网络的拓扑关系。社区发现可以帮助更好地理解网络拓扑结构及其功能,从而更好地利用和改造网络,例如挖掘网络中的未知功能、控制疾病传播等。社区发现在某些特定应用环境中也有现实意义,例如发现恐怖分子、寻找犯罪团体等。
然而,真实网络存在一些同时属于多个社区的节点,这些节点叫作“重叠节点”,与其它社区存在重叠节点的社区就叫作“重叠社区”。例如在社会关系网络中,小王既参加了台球俱乐部,又参加了乒乓球俱乐部,那么小王就是这两个社区的重叠节点,台球俱乐部和乒乓球俱乐部是两个重叠社区。重叠社区较之非重叠社区具有更好的现实意义:一方面,重叠节点是网络中关键点,重叠社区因此而产生联系;另一方面,重叠社区反映了更加真实的网络结构。因此,研究重叠社区更符合真实网络的结构。
图1为非重叠社区结构,图2为接近真实网络的重叠社区结构。目前,能够发现重叠社区结构的算法主要包括以下3类:
(1)基于clique的方法。典型算法有CPM算法[3]、EAGLE算法[6]和GCE算法[7]。
(2)基于合并社区核心和扩展社区的方法[8]。
(3)基于标签传播的方法典型算法有LPA算法[4]和
COPRA算法[5]。
CPM算法是一种派系过滤算法,主要通过寻找Kclique 派系社区对社区进行划分。虽然CPM能够发现重叠点,但该算法在实际应用中依赖参数K的选取,不同K值导致划分出来的社区结构有很大差别。因此,在实际应用中存在一定局限性。同样地,EAGLE和GCE算法是CPM的改进算法,存在同样的局限。
基于合并社区核心和扩展社区的算法需要人为指定两
个参数,这两个参数需要先验知识,和具体网络相关并影响社区发现结果的好坏。
基于标签传播的算法是一类具有接近线性时间复杂度
的算法,该算法的优点是计算过程简单,计算速度快,而它的缺点是算法稳定较差,每次运行的结果可能都不一样。本文提出一种新的标签算法,该算法对COPRA 算法的初始化过程和随机选择过程作出了改进,从而大大提高算法的稳定性。
2标签传播算法
本文重点对标签传播算法中的COPRA算法进行改进,故简要介绍标签传播思想和LPA算法,并分析COPRA算法与LPA的区别。
2.1算法思想
标签传播算法最早由zhu等[9]于2002年提出,是基于
图的半监督学习方法,其基本思想是通过标记节点的标签信息预测还未标记节点的标签情况。节点之间的标签传播主要依照标签相似度来进行,在传播过程中,未标记的节点根据邻接点的标签情况来迭代更新自身的标签信息,如果其邻接点与其相似度越相近,则表示对其所标注的影响权值就越大,邻接点的标签就更容易进行传播。
图3为标签传播过程。每个顶点都有一个唯一的标签作为社区标识,对图中所有的顶点进行标签迭代更新。在迭代过程中,每个顶点标签为其邻接点中出现次数最多的节点的标签。如果多个标签的数量都是最大值,则随机选择一个作为该顶点的标签。经过若干次迭代,最终形成一个完全连通图(代表一个社区),并且该图内所有顶点都拥有相同标签。
2.2LPA算法
LPA算法基于标签传播算法思想来发现社区结构。该算法由Raghavan[4]提出,根据每个节点邻接点的社区情况来选择所要加入的社区。其主要思想是起初每个节点拥有独立的标签,每次迭代中对于每个节点将其标签更改为其邻接点中出现次数最多的标签,如果这样的标签有多个,则随机选择一个。通过迭代,直到每个节点的标签与其邻接点中出现次数最多的标签相同,则达到稳定状态,算法结束。此时具有相同标签的节点即属于同一个社区。
LPA算法的执行步骤:
(1)初始化过程即为网络中的每个结点分配一个唯一的标签,对于节点x,有Gx(0)=x。
(2)设置t=1。
(3)将网络中的节点随机排序,假设顺序为x。
(4)对x中每个节点x,将x的标签设置为新的标签Cx(t)=f(Cx1(t),..,Cxm,Cxm+1(t-1)),f函数返回节点x的邻接点中出现次数最多的标签。如果有多个,则随机选择一个。
(5)如果每个节点的标签都与其邻接点中出现次数最多的标签相同,则算法结束,否则设置t=t+1,返回步骤3
继续执行。
2.3COPRA算法
LPA算法虽然有很多优势,但无法挖掘出重叠社区结构。对此,Steve[5]基于原先的算法,引入了新的标签结构(c,b),对每个节点x,x∈G(x),都拥有这样的标签。其中,c表示社区标识符,b表示节点x在社区c中的从属系数,且0≤b≤1。COPRA算法的执行过程如下:
(1)初始化,对任意的节点x,x∈G(x)分配一个唯一的标签(cx,1)。
(2)节点x根据其邻接点集的标签情况更新自己的标签。如果有多个可选标签,算法会随机选取其中的v个标签作为结果。其中,0