开放科学(资源服务)标志码(OSID):
在现实世界中,许多事物之间的关系可用复杂网络表示。复杂网络又分为重叠社区和非重叠社区,若节点只属于一个社区,称该社区为非重叠社区;反之则称为重叠社区。目前的研究主要集中在非重叠社区检测,而真实社交网络中的社区通常是互相重叠的[1],例如个体可能会同时属于学校和社区,且其在网络中也可能会同时存在于多个兴趣小组中。因此,重叠社区的研究对于复杂网络的结构分析具有重要意义[2]。
近年来,研究者发现,重叠社区与现实世界网络的实际社区结构较为贴近,更具有研究意义,一些优秀的思想和方法被相继提出。2004年,NEWMAN等提出经典的基于分裂思想的社团检测算法[3]。2005年,PALLA等提出基于派系过滤思想的重叠社区发现算法[4]。之后,研究者围绕派系过滤提出了多种不同的方法,如FARKAS等提出针对加权网络的社区划分算法[5],KUMPULA等提出快速的派系过滤算法[6]。2007年,RAGHAVAN等提出了著名的标签传播算法[7]。其后,研究者又提出了一些新的基于标签传播的改进算法,如SHANG等提出了一种基于循环搜索核心节点并根据节点的相似度进行标签传播的方法[8],文献[9-10]提出了基于节点重要性进行社区检测的标签传播方法,WANG等提出了一种改进随机策略[11],提高了标签传播算法的稳定性,但这些算法都只是解决了非重叠社区的划分问题。为了将标签传播算法应用到重叠社区检测中,STEVE等提出了基于标签隶属度的重叠社区检测算法[12](Community Overlap Propagation Algorithm,COPRA),XIE等提出了一种基于speaker和listener的标签传播算法[13],SUN等提出了一种基于优势标记传播的网络重叠社区检测算法[14],MA等在COPRA的基础上提出了一种采用PageRank和节点聚类系数的标签传播重叠社区检测算法[15]。这些算法都保持了标签传播算法可应用于大规模复杂网络重叠社区检测的优点,然而,并没有解决LPA随机性强、准确性差的问题,不能有效提高社区划分质量。
本文提出一种基于节点引力和鱼记忆的社区检测算法。通过节点质量计算节点信息熵,并将信息熵融入k-shell算法中进行节点排序,同时根据节点与标签间的引力,使用鱼记忆节点标签存储策略实现标签更新,从而解决标签传播随机性造成社区划分不稳定的问题,提高社区检测的准确性。
1 基于节点引力与鱼记忆的标签传播算法当前的标签传播算法有近似线性的时间复杂度,但稳定性较差,即多次运行算法的社区发现结果差异很大。有效解决节点更新的随机性及标签选择的不确定性,可以增强社区检测的稳定性,提高社区检测质量。本文提出的算法通过节点间的相互关系和节点标签间的吸引力,解决节点排序与标签传播更新两个重要步骤的随机性与不确定性问题。
1.1 相关定义设定图
![]() |
Download:
|
图 1 简单图结构 Fig. 1 Simple graph structure |
定义1 如果图G中的节点
$ N\left({v}_{i}\right)=\left\{{u}_{i}\left|\left({u}_{i}, v\right)\in E\wedge {u}_{i}\in V\right.\right\} $ | (1) |
则称
定义2(节点质量) 对于
一个节点可能是潜在的社区中心,即该节点具有以下特征:它与更多的邻居节点连接,并且这些邻居节点紧密地相互连接。一个节点与其邻居节点连接得越紧密,这个节点与其邻居节点形成的三角形就越多,这意味着如果一个节点具有较大的度,并且与其邻居节点形成更多的三角形,那么该节点质量越好,成为社区中心的可能性越大。因此,本文采用三角形数量及节点的度来表示节点质量,定义为:
$ {Q}_{i}=\frac{1}{2}\left(1+\frac{\left({T}_{i}+{k}_{i}\right)-\underset{l\in V}{\mathrm{m}\mathrm{i}\mathrm{n}}\left({T}_{l}+{k}_{l}\right)}{\underset{j\in V}{\mathrm{m}\mathrm{a}\mathrm{x}}\;\mathrm{m}\mathrm{a}\mathrm{x}\left({T}_{j}+{k}_{j}\right)-\underset{l\in V}{\mathrm{m}\mathrm{i}\mathrm{n}}\left({T}_{l}-{k}_{l}\right)}\right) $ | (2) |
其中:
定义3(节点信息熵) 节点信息熵表示节点获取邻居节点信息时消耗的能量,定义为:
$ {E}_{i}=-\sum\limits_{j\in \Gamma \left(i\right)}{Q}_{j}\cdot \mathrm{l}\mathrm{n}{Q}_{j} $ | (3) |
信息熵由节点质量计算得到,用以表示该节点质量的强弱,即节点在图中的中心度。
定义4(节点相似度) 节点相似度反映了两个相邻节点之间的连接强度。
常用的相似度计算方法是用Katz函数[16]进行相似度度量,然而它不能有效区分两个节点之间的程度差异对节点相似性的影响。此外,该算法计算复杂度很高。受Jaccard函数[17]的启发,本文提出一个基于Jaccard函数的相似性函数,如式(4)所示:
$ {S}_{ij}=\left\{\begin{array}{l}\frac{\left|{N}_{i}\bigcap {N}_{j}\right|}{\left|{N}_{i}\bigcup {N}_{j}\right|}, i\mathrm{、}j相连且有公共邻居节点\\ \frac{\alpha }{k(i)+k(j)}\sum\limits_{t, r\in {D}_{ij}, t\ne r}{S}_{tr}, i\mathrm{、}j相连且没有公共邻居节点\\ 0\text{,}i\mathrm{、}j不相连或i=j\end{array}\right. $ | (4) |
其中:
定义5(节点引力) 节点
$ {G}_{j}\left(i\right)=\frac{{E}_{i}{E}_{j}}{{\beta }_{ij}} $ | (5) |
$ \beta =\frac{\underset{t\in N\left(i\right)}{\mathrm{m}\mathrm{a}\mathrm{x}}S(t, i)}{{S}_{ij}} $ | (6) |
在标签传播过程中,不同邻居节点间的引力大小是不同的,也就导致不同节点间的信息影响程度不同。本文用节点的信息熵
定义6(节点记忆) 模拟鱼的记忆存储特征,构建一个节点记忆集合:
$ \left\{\begin{array}{l}{M}_{i}={M}_{i}^{\mathrm{\text{'}}}\bigcup {M}_{i}^{″}\\ {M}_{i}^{\text{'}}=\left\{{l}_{d}^{m-2n}, \cdots , {l}_{d}^{m-2}, {l}_{d}^{m}\right\}\\ {M}_{i}^{″}=\left\{{l}_{d}^{m-(2n+1)}, \cdots , {l}_{d}^{m-3}, {l}_{d}^{m-1}\right\}\end{array}\right. $ | (7) |
其中:
本文借鉴文献[12]的设计思想,使用
为了降低标签传播的复杂性,只传播具有最大归属系数的优势标签[14],同时避免随机更新节点标签带来的社区检测不稳定性,将节点熵融入k-shell算法[18]对节点进行排序,节点标签将根据排序进行标签更新。笔者认为,节点k值越高、信息熵越大,节点成为潜在社区中心的概率越大。因此,按升序对节点进行排序,可以使潜在社区中心的标签传播得足够远,以占据社区中心,然后社区可以获得与其他社区边界区域中的节点,从而检测到更准确的社区结构。
在每一次迭代的开始,首先更新标签及节点间引力大小,具体更新策略如下:
1)根据节点的k值,对节点
2)计算各节点信息熵,在每一k壳中进行升序排序,然后进行总体升序排序。
3)对于节点,在迭代开始更新标签时,节点只接收各邻居节点引力最大的标签,并形成邻居节点标签集:
$ {L}_{i}=\left\{{l}_{j\to i}\left|j\in N\left(i\right)\right.\right\} $ | (8) |
其中:
4)基于
$ \widehat{g}=\frac{\sum\limits_{{l}_{j\to i}\in {L}_{i}, j\in N\left(i\right), {c}_{j}=c}g\left({c}_{j}, j\right)\cdot {G}_{j}\left(i\right)}{\sum\limits_{{l}_{j\to i}\in {L}_{i}, j\in N\left(i\right)}g\left({c}_{j}, j\right)\cdot {G}_{j}\left(i\right)}, \sum \widehat{g}\left(c, j\right)=1 $ | (9) |
更新
5)删除
$ {\widehat{\widehat{g}}}_{m}=\frac{{\widehat{g}}_{m}}{\sum\limits_{j\in {N}^{\mathrm{\text{'}}}\left(c\right)}{\widehat{g}}_{j}}, \sum \widehat{\widehat{g}}\left(c, j\right)=1 $ | (10) |
更新
6)将节点新的标签集以
7)将
CDA-GM算法伪代码如算法1所示。
算法1 CDA-GM
输入 网络
输出 节点
1.for
2.
3.
4.
5.
6.end for
7.根据k值的大小进行k-shell排序,各k-shell内的节点由
8.
9.for
10.
11.将各节点
12.while
13.for
14.
15.更新
16.if
17.then
18.end if
19.end for
20.
21.end while
22.Output G
CDA-GM算法的简单图应用如图 2所示。
![]() |
Download:
|
图 2 CDA-GM的简单图应用 Fig. 2 Application of CDA-GM algorithm in simple graph |
首先根据式(3)计算出的
一个具有n个节点的图结构,在CDA-GM的第一阶段,时间复杂度分析如下:
1)
2)
3)利用
在CDA-GM的第二阶段,标签迭代更新T次的时间复杂度为
为验证CDA-GM算法的性能,本文在真实数据集和人工数据集上进行社区检测实验,并与其他算法的社区检测结果进行对比。
人工数据集由LFR人工基准发生器[19]生成,采用标准化互信息(NMI)指标[20]进行对比评价。真实网络大多情况下是不知其社区划分的,因此,采用当前主流的拓展模块度EQ[21]函数进行评价。
为更直观地验证CDA-GM的实现效果,分别选取COPRA[12]、SPLA[13]、DLPA[14]、COPRAPC[15]算法进行对比。将COPRA、SLPA、DLPA的参数分别设置为
LFR基准网络由LANCICHINETTI等[19]提出,具有真实世界的网络特性,且社区可调模块度呈幂律分布。LFR各参数意义如表 1所示,其中混合参数
![]() |
下载CSV 表 1 LFR基准网络参数说明 Table 1 LFR benchmark network parameters description |
![]() |
下载CSV 表 2 LFR基准网络参数设置 Table 2 LFR benchmark network parameters setting |
实验用到的真实数据集有小数据集Karate、Dolphins和Football,以及大数据集Facebook、Ca-HepPh和Email-Enron。其中:小数据集来自于http://www-personal.umich.edu/~mejn/netdata/;大数据集来自于http://snap.stanford.edu/data/。具体数据参数如表 3所示。
![]() |
下载CSV 表 3 真实网络相关参数 Table 3 Related parameters of the real network |
标准化互信息(Normalized Mutual Information,NMI)指标[20]用于评价已知网络结构的社区检测。因为NMI被用于比较各算法所获取的社区划分与基准网络社区结构间的相似程度,所以只能被用于已知社区结构的网络。NMI指标定义如下:
$ {N}_{\mathrm{N}\mathrm{M}\mathrm{I}}\left(A, B\right)=\frac{-2\sum\limits_{i=1}^{{C}_{A}}\sum\limits_{j=1}^{{C}_{B}}{M}_{ij}\mathrm{l}\mathrm{b}\left(\frac{{M}_{ij}N}{{M}_{i·}{M}_{·j}}\right)}{\sum\limits_{i=1}^{{C}_{A}}{M}_{i·}\mathrm{l}\mathrm{b}\left(\frac{{M}_{i·}}{N}\right)+\sum\limits_{j=1}^{{C}_{B}}{M}_{·j}\mathrm{l}\mathrm{b}\left(\frac{{M}_{·j}}{N}\right)} $ | (11) |
其中,
对于未知社区结构的真实网络,算法划分结果往往采用社区模块度(即Q指标)[22]作为划分社区结构质量的评价指标。与文献[22]提出的模块度指标不同,因为本文研究的对象是重叠社区,所以采用的是重叠模块度
$ {Q}^{\mathrm{E}}=\frac{1}{2m}\sum\limits_{i}\sum\limits_{x, y\in {C}_{i}}\frac{1}{{O}_{x}{O}_{y}}\left[{A}_{xy}-\frac{{k}_{x}{k}_{y}}{2m}\right] $ | (12) |
其中:
本文分别在LFR1与真实世界网络上进行对相似度参数
![]() |
Download:
|
图 3 各 |
![]() |
Download:
|
图 4 各 |
由图 3、图 4可以看出:当
为分析记忆存储参数,将相似度参数设为0.8,在人工网络LFR1中对是否引入鱼记忆存储及记忆存储个数进行实验对比分析。CDA-GM引入鱼记忆存储方法前后及不同记忆存储个数在LFR1人工网络中的性能表现如图 5所示。
![]() |
Download:
|
图 5 各 |
在图 5中,
CDA-GM及其他4种比较算法在基准网络LFR1、LFR2和LFR3中的NMI评价结果如图 6所示。
![]() |
Download:
|
图 6 各算法在3种LFR基准网络上的实验结果 Fig. 6 Experimental result of each algorithm on three LFR benchmark networks |
在图 6(a)中,调整
在图 6(b)中,调整
在图 6(c)中,调整
本文选取LFR3中
![]() |
Download:
|
图 7 各算法稳定性对比 Fig. 7 Stability comparison of each algorithm |
图 8显示了各算法在LFR4人工网络上的时间耗费。可以看出:DLPA所用的时长最短,SLPA与COPRA相当,这是因为DLPA的时间复杂度为
![]() |
Download:
|
图 8 LFR4网络数据集上的运行时间 Fig. 8 Running time on LFR4 data sets |
算法划分的社区与原有社区的相似程度,也经常用于辅助评价社区检测结果。表 4为各算法在LFR1上获取的社区数量,其中,
![]() |
下载CSV 表 4 各算法划分社区数 Table 4 Number of divided communities of each algorithm |
将5种算法分别应用到真实世界数据中,对比经过20次重复实验取得的平均值
![]() |
下载CSV
表 5 各算法 |
![]() |
下载CSV
表 6 各算法 |
可以看出,CDA-GM在所用真实网络中获得的
为提高社区检测的准确性和稳定性,本文提出一种基于节点引力与鱼记忆的社区检测算法CDA-GM。使用融入节点信息熵的k-shell排序策略,同时利用节点间的引力选择标签。在此基础上,引入鱼记忆的节点标签存储策略避免出现标签震荡。实验结果表明,该算法在LFR人工基准网络和真实世界网络中能获得较好且稳定的NMI值和社区模块度,检测性能优于COPRA、SLPA、DLPA和COPRAPC算法。在后续研究中,拟将本文算法结合时间参数应用到动态的社区检测中,进一步提高算法的实用性。
[1] |
KHOSHGOZARAN A, SHAHABI C. Blind evaluation of nearest neighbor queries using space transformation to preserve location privacy[M]//PAPADIAS D, ZHANG D, KOLLIOS G. Advances in spatial and temporal databases. Berlin, Germany: Springer, 2007: 239-257.
|
[2] |
陈界全, 王占全, 李真, 等. 基于SLPA优化的重叠社区发现算法[J]. 计算机应用与软件, 2021, 38(1): 297-302, 329. CHEN J Q, WANG Z Q, LI Z, et al. An improved overlapping community detection algorithm based on SLPA[J]. Computer Applications and Software, 2021, 38(1): 297-302, 329. (in Chinese) |
[3] |
NEWMAN M E J, GIRVAN M. Finding and evaluating community structure in networks[J]. Physical Review E, 2004, 69(2): 1-10. |
[4] |
GIRSHICK R. Fast R-CNN[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2015: 1-10.
|
[5] |
FARKAS I J, DÁNIELÁ, PALLA G, et al. Weighted network modules[J]. New Journal of Physics, 2007, 9(6): 180. DOI:10.1088/1367-2630/9/6/180 |
[6] |
KUMPULA J M, KIVELÄ M, KASKI K, et al. Sequential algorithm for fast clique percolation[J]. Physical Review E, 2008, 78(2): 1-10. |
[7] |
RAGHAVAN U N, ALBERT R, KUMARA S. Near linear time algorithm to detect community structures in large-scale networks[J]. Physical Review E, 2007, 76(3): 1-10. |
[8] |
SHANG R H, ZHANG W T, JIAO L C. Circularly searching core nodes based label propagation algorithm for community detection[J]. International Journal of Pattern Recognition and Artificial Intelligence, 2016, 30(8): 1-10. |
[9] |
ZHANG X K, REN J, SONG C, et al. Label propagation algorithm for community detection based on node importance and label influence[J]. Physics Letters A, 2017, 381(33): 2691-2698. DOI:10.1016/j.physleta.2017.06.018 |
[10] |
MA T R, XIA Z Y. An improved label propagation algorithm based on node importance and random walk for community detection[J]. Modern Physics Letters B, 2017, 31(14): 1-10. |
[11] |
WANG T, CHEN S S, WANG X X, et al. Label propagation algorithm based on node importance[J]. Physica A: Statistical Mechanics and Its Applications, 2020, 551: 1-10. |
[12] |
GREGORY S. Finding overlapping communities in networks by label propagation[J]. New Journal of Physics, 2010, 12(10): 1-10. |
[13] |
XIE J R, SZYMANSKI B K. Towards linear time overlapping community detection in social networks[M]//TAN P N, CHAWLA S, HO C K, et al. Advances in Knowledge Discovery and Data Mining. Berlin, Germany: Springer, 2012: 25-36.
|
[14] |
SUN H L, HUANG J B, TIAN Y Q, et al. Detecting overlapping communities in networks via dominant label propagation[J]. Chinese Physics B, 2015, 24(1): 1-10. |
[15] |
马健, 刘峰, 李红辉, 等. 采用PageRank和节点聚类系数的标签传播重叠社区发现算法[J]. 国防科技大学学报, 2019, 41(1): 183-190. MA J, LIU F, LI H H, et al. Overlapping community detection algorithm by label propagation using PageRank and node clustering coefficients[J]. Journal of National University of Defense Technology, 2019, 41(1): 183-190. |
[16] |
KATZ L. A new status index derived from sociometric analysis[J]. Psychometrika, 1953, 18(1): 39-43. DOI:10.1007/BF02289026 |
[17] |
REAL R, VARGAS J M. The probabilistic basis of Jaccard's index of similarity[J]. Systematic Biology, 1996, 45(3): 380-385. DOI:10.1093/sysbio/45.3.380 |
[18] |
BONACICH P. Factoring and weighting approaches to status scores and clique identification[J]. The Journal of Mathematical Sociology, 1972, 2(1): 113-120. DOI:10.1080/0022250X.1972.9989806 |
[19] |
LANCICHINETTI A, FORTUNATO S, RADICCHI F. Benchmark graphs for testing community detection algorithms[J]. Physical Review E, 2008, 78(4): 1-10. |
[20] |
DANON L, DÍAZ-GUILERA A, DUCH J, et al. Comparing community structure identification[J]. Journal of Statistical Mechanics: Theory and Experiment, 2005(9): 1-10. |
[21] |
SHEN H W, CHENG X Q, GUO J F. Quantifying and identifying the overlapping community structure in networks[J]. Journal of Statistical Mechanics: Theory and Experiment, 2009(7): 1-10. |
[22] |
LANCICHINETTI A, FORTUNATO S. Benchmarks for testing community detection algorithms on directed and weighted graphs with overlapping communities[J]. Physical Review E, 2009, 80: 1-10. |