一种结合属性信息和结构信息的大规模社区检测方法

文档序号:30733512发布日期:2022-07-13 03:43阅读:99来源:国知局
一种结合属性信息和结构信息的大规模社区检测方法

1.本发明涉及社区网络检测技术领域,尤其涉及一种结合属性信息和结构信息的大规模社区检测方法。


背景技术:

2.现实中生活复杂网络随处可见,如社交网络、万维网、电力网、生物蛋白质网络等,复杂网络的数据规模目前呈爆炸式增长,这些复杂网络并非由顶点随机连接组成,相同类型的顶点往往连接在一起形成一个个社区,如在社交网络中社区表示具有相同兴趣、地区、背景的社会团体,将社交网络划分成不同社区可以更有效的对用户进行广告投放和朋友推荐等,社区检测可以在海量的数据中挖掘出网络中的潜在信息,帮助人们更高效的分析和开发这些网络。
3.经典的社区检测方法只分析网络的结构,而忽略了网络的属性信息。近年来,人们意识到只考虑网络的结构可能并不能足以准确识别出社区,真实世界的图还具有与顶点相关联的属性。例如社交网络既包含用户与用户之间的友谊关系,也包含诸如兴趣、年龄、工作等用户属性,这些属性对于分析用户社会关系是具有非常重要的作用。于是如何合理的综合结构信息和属性信息进行属性图的社区检测成为目前研究的焦点。
4.目前联合使用结构信息与属性信息的检测方法主要:基于权重的方法、基于距离的方法、基于顶点增强图的方法、基于嵌入的方法、基于概率模型的方法和基于演化算法的方法6种:
5.(1)基于权重的方法
6.旨在以统一的图形式表示结构和属性。以往的社区检测方法通常是对图进行聚类,无法直接应用在属性图上,于是将将属性转换为加权属性图,并进一步以将其与结构图合并得到加权图,然后就可以在其上使用经典的图聚类算法。
7.(2)基于距离的方法
8.与基于权重的方法相反,基于距离的方法舍弃用图表示网络,转而通过使用顶点间距离建立矩阵进行分析。结合结构和属性信息进行表示。距离矩阵通常通过结合结构和属性信息函数来获得。这类算法两个顶点共享的属性越多,连接的路径越多,顶点就被认为越接近。
9.(3)基于顶点增强图的方法
10.该方法将不同的属性值转变成多个属性顶点,使属性图转换为一个增强图,该方法比原属性图包含更多的顶点和边,这使得该类方法在计算上相当昂贵。
11.(4)基于嵌入的方法
12.用图来表示网络的这种形式给网络分析带来了一些困难。图算法具有计算复杂度高、并行性低和一般方法不适用等困难。基于嵌入的方法将图转换成低维连续向量的形式,通过学习顶点嵌入,更有效地对网络结构和属性信息编码。
13.(5)基于概率模型的方法
14.这种方法假设网络结构和属性是根据选定的统计模型分布生成的,然后推断出属性图中顶点的社区成员身份分布,然而正确选择结构和属性的先验分布是一项艰巨的任务,使得该方法面临许多局限性。
15.(6)基于演化算法的方法
16.前面几种方法需要预先知道社区的个数或社区规模的大小,在真实网络中很难预测,因此这些方法都有一定的局限性。演化算法是一种模拟自然遗传进化规律的仿生学算法,重复迭代和不断的优化,保留那些适应环境的优良个体,目前基于演化计算的社区检测已不胜枚举,例如模拟退火算法、粒子群算法、差分算法等。具有灵活,简单鲁棒性强等特点。
17.准确地探测复杂网络中的社区结构不仅可以挖掘出更多有价值的信息,而且能够帮助人们更深入地理解复杂网络。同时考虑属性和结构信息去进行社区划分可以得到更好的划分效果,但是属性相似性和结构相似性是两个独立的问题,如何有效的将其结合成为了一个严峻的挑战。同时现实世界中的网络拥有着数千万个顶点以及上亿条边,其计算开销及其昂贵,因此处理大规模图数据也成为一项严峻的挑战。


技术实现要素:

18.本发明要解决的技术问题是针对上述现有技术的不足,提供一种结合属性信息和结构信息的大规模社区检测方法,利用差分和非支配排序算法,实现高效、简单、可靠的属性网络社区检测。
19.为解决上述技术问题,本发明所采取的技术方案是:一种结合属性信息和结构信息的大规模社区检测方法,
20.使用邻接表描述属性网络;
21.确定属性网络中的核心顶点并标记;
22.将属性网络划分为多个子网络分配给不同计算单元处理;
23.在各计算单元上对每个子网络初始化差分算法的种群,实现对各子网络的社区划分;
24.根据社区属性相似度值和模块度两个社区检测量化指标并利用属性权重向量,对社区划分结果进行优化;
25.根据各个计算单元返回的子网络社区划分结果,对社区划分结果进行合并,得到最终整个属性网络的社区划分结果。
26.包括以下步骤:
27.步骤1、输入需要进行分析的属性网络数据,并使用邻接表描述属性网络;
28.步骤2、对输入的属性网络数据分析计算,判断属性网络中每个顶点是否是核心顶点,并对核心顶点进行标记;
29.首先计算出相邻顶点之间的结构化相似度,进而确定各顶点的ε邻居数目,其中,ε为设置的结构相似度阈值;再根据ε邻居数目判断顶点是否是核心顶点;
30.步骤3、将属性网络划分为多个子网络分配给不同计算单元处理;
31.将属性网络数据分片,每个分片即为一个子网络;
32.步骤4、在计算单元上对每个子网络初始化差分算法的种群,实现对各子网络的社
区划分,具体步骤如下;
33.步骤4-1、对差分算法种群中个体表示进行编码,使每个个体表示为子网络的一个社区划分方式;
34.设定种群中第f个个体编码为xf=(x1,x2.....xn),其中,n为子网络中所有顶点的数量,xn的取值表示第n个顶点的社区编号;
35.步骤4-2、随机初始化属性网络中各属性的权重,初始化种群中的每个个体,并根据邻居投票的原则更新顶点的社区编号,完成子网络社区的初步划分;
36.步骤4-2-1、初始化属性网络中各属性的权重;
37.随机初始化属性网络中各属性权重,并使所有属性的权重之和为1;
38.步骤4-2-2、初始化个体;
39.令每个顶点的社区编号等于其自身顶点编号,x1=1,
……
xn=n,相当于建立了n个社区;
40.步骤4-2-3、更新顶点的社区编号;
41.依次遍历子网络中的顶点,若w(r(u)-r(v))等于0,则顶点u的社区编号等于顶点v的社区编号,即xu=xv,直接遍历下个顶点;
42.否则根据邻居投票得出结构属性代表度vote最大时的社区编号cid作为该顶点u的社区编号,社区编号cid对顶点u的结构属性代表度如下公式所示:
[0043][0044]
其中,n(u)为u的邻居顶点集合,c(v)为v的社区编号,δ(u,v)为顶点u和v的结构相似性,w是所有属性的权重向量,r(u)、r(v)分别是顶点u、v的属性值;
[0045]
步骤4-2-4、迭代;重复迭代执行步骤4-2-3,直至达到设定的迭代次数;
[0046]
步骤5、根据社区属性相似度值和模块度两个社区检测量化指标并利用属性权重向量,对社区划分结果进行优化,具体步骤如下:
[0047]
步骤5-1、使用差分算法迭代生成新的个体,每个个体代表一种新的社区划分方式;
[0048]
步骤5-1-1、变异;使用改良的变异算子对个体进行变异,改良后的变异算子能够在离散问题上同时对多个个体变异;
[0049]
步骤5-1-2、适应度计算;
[0050]
计算每个个体的第j个社区cj属性相似度和平均社区属性相似度sa,如下公式所示:
[0051][0052][0053][0054]
其中,s(u,v)是同社区的顶点u,v的属性相似度值,d是属性个数,w是属性权重向
量,r是属性值,k是所有社区数量,是社区cj内的顶点数量;
[0055]
步骤5-1-3、交叉;
[0056]
采用二路交叉策略进行交叉操作,每次生成两个新个体;
[0057]
步骤5-1-4、子代生成;
[0058]
将交叉和变异生成的新个体构成的子代与父代一起送到步骤5-2,选择保留较优的个体;
[0059]
步骤5-2、使用非支配排序算法选择保留较优的个体进入下次迭代;
[0060]
将父代和子代种群合并,同时优化社区属性相似度值和模块度两个目标函数;
[0061]
采用非支配排序算法首先依照两个检测量化指标对父代和子代种群中的个体进行非支配排序,按照支配关系分配等级,并计算每个个体的拥挤距离,将个体按照非支配排序等级从高到低,拥挤距离从大到小的顺序排序,从前取出所需数量的个体形成下一代种群继续迭代;
[0062]
步骤5-3、记录每一代的最优个体,结合各属性对当前社区的贡献度采用投票机制更新属性权重;
[0063]
属性对当前社区的贡献度定义如下:
[0064][0065]
其中,u是社区cj中的一个顶点,是社区cj中所有顶点在属性r
l
分量上的平均值,τ是设定阈值,r
l
(u)表示顶点u在属性r
l
分量上的取值;
[0066]
属性权重更新如下公式所示:
[0067][0068]
其中,是属性r
l
第t次迭代的权重,d是属性网络中属性数量,k是当前社区个数;
[0069]
步骤5-4、重复执行5-1到5-3,直到各子网络的社区划分都完成优化,输出各子网络社区划分结果;
[0070]
步骤6、根据各个计算单元返回的子网络社区划分结果及核心顶点标记,对社区划分结果进行合并,得到最终整个属性网络的社区划分结果;
[0071]
对于划分后的任一社区,依次遍历其他社区,利用核心顶点判断其是否和当前社区结构可达,若满足条件则将该社区与当前选择社区合并;
[0072]
采用上述技术方案所产生的有益效果在于:本发明提供的一种结合属性信息和结构信息的大规模社区检测方法,在结构信息与属性信息之间取得平衡,将复杂的属性网络划分成多个社区,具体为:
[0073]
(1)提出基于邻居投票的初始化种群算法,将结构信息和属性信息相融合,保证演化计算的初始种群质量,同时社区数目无需事先人为设定。解决了采用随机初始化种群质量低下,算法效率过低的问题,提高了种群收敛速度并使社区结构更加准确可靠。
[0074]
(2)将改进差分进化算法并结合多目标算法来进行属性网络的社区检测,该方法无需提前指定社区规模,利用差分进化收敛快、结构简单、鲁棒性强、直接的全局搜索等特
点,并使用属性和社区结构两个目标函数,在两个不同的度量上取得平衡,并使用权重系数的自适应更新策略,优化社区划分结果。
[0075]
(3)利用分布式平台处理大规模网络数据的社区检测问题,将原始网络分为几张子网络,利用分布式在多个计算单元上处理,使用改进差分多目标算法并行对多个子网络进行社区检测,最后将各个子网络的生成的社区划分结果利用一定的规则进行合并,输出最终的社区划分结果。上述方法不仅能够防止没有足够大的内存存放大规模的网络数据,还能大大加快运算速度,提高效率。
[0076]
因此,该社区检测方法简单、可靠、有效、容易理解,不需提前设定社区规模、可处理大规模网络数据。
附图说明
[0077]
图1为本发明实施例提供的一种结合属性信息和结构信息的大规模社区检测方法的流程图;
[0078]
图2为本发明实施例提供的大规模的属性网络数据的邻接表表式图;
[0079]
图3为本发明实施例提供的寻找大规模的属性网络核心顶点的示意图;
[0080]
图4为本发明实施例提供的基于差分多目标算法实现子网络社区划分优化的流程图;
[0081]
图5为本发明实施例提供的进行交叉操作生成新个体的示意图;
[0082]
图6为本发明实施例提供的非支配排序中拥挤度计算示意图;
[0083]
图7为本发明实施例提供的本发明的社区检测方法与pscan算法在youtube社交网络数据集上的3个评估指标对比示意图。
具体实施方式
[0084]
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0085]
本实施例以youtube社交网络数据集为例,在hadoop环境下,采用本发明的一种结合属性信息和结构信息的大规模社区检测方法,实现对该社交网络中社区的检测。youtube社交网络数据集,数据集每个顶点是一个用户,边表示用户之间存在关系,共有1134890个顶点,2987624条边和8385个真实社区,使用ubc大学xin在论文attribute-driven community search中的方法从数据集中提取20个属性,同社区的用户具有相似的兴趣爱好、更密切的关系。
[0086]
本实施例中,一种结合属性信息和结构信息的大规模社区检测方法,如图1所示,包括以下步骤:
[0087]
步骤1、输入需要进行分析的大规模的属性网络数据,并使用邻接表形式描述网络;
[0088]
本实施例中,youtube社交网络数据集对应的邻接表如图2所示,每一行表示一个顶点及其所有的邻居顶点,每一个顶点后带有该顶点的属性集,a
x1-a
x20
顶点与其属性之间用

;’隔开,#后的数字代表该顶点的邻居,然后将该文件存放在hadoop的hdfs文件系统中;
[0089]
步骤2、对输入的属性网络数据分析计算,判断属性网络中每个顶点是否是核心顶
点,并对核心顶点进行标记,为将来多个社区合并做准备;
[0090]
首先计算出相邻顶点之间的结构化相似度,进而确定各顶点的ε邻居数目,其中,ε为设置的结构相似度阈值;再根据ε邻居数目判断顶点是否是核心顶点;
[0091]
定义n
ε
(u)为与顶点u的结构相似度不小于ε的邻居顶点所组成的集合,ε邻居的数目|n
ε
(u)|大于阈值μ的顶点u就是核心顶点;
[0092]
本实施例中,设定ε=0.6,μ=5,核心顶点如图3中顶点6所示,计算核心顶点需要先求顶点间结构化相似度,其定义为:
[0093][0094]
本实施例中,在hadoop中计算核心顶点的方法如下:
[0095]
(1)计算顶点间结构化相似度,需要求出顶点各自的闭邻居集合及顶点间的共同邻居数量,具体步骤为:
[0096]
map阶段,输入的邻接表如图2所示,map端按行读取数据,每一行数据都可以得到当前顶点和其所有邻居顶点编号,循环遍历当前顶点和其所有邻居,将每个顶点与邻居按序号递增进行组合作为map端的输出key,value则取当前行的所有邻居顶点集合;
[0097]
reduce阶段,对map端的数据进行分区后相同的顶点组合会进入同一个reduce中,此时value值为两个顶点的所有邻居集合。按照定义对key中的两个顶点计算出结构化相似性度,最后将key值原样输出,value赋值为得到的结构化相似性度;
[0098]
(2)接下来计算核心顶点,将计算结构相似性步骤中生成的结果作为当前的输入,结果输出一个核心顶点文件,实施步骤为:
[0099]
map阶段,将传来的key值中的每个顶点分别作为输出key,value为输入的value值;
[0100]
reduce阶段,计算当前key的ε邻居个数是否满足给定阈值μ,若满足则输出当前key值,value值为1,否则value值为0;
[0101]
(3)根据生成的核心顶点文件为原始邻接表文件的顶点添加核心顶点标识,实施步骤为:
[0102]
map阶段,判断当前读取数据来自哪一文件,若是核心顶点文件,则key值为核心顶点,value为1,若为邻接表文件则key和value与邻接表文件的输入相同;
[0103]
reduce阶段,相同key值被送到同一个reduce中,计算value长度,若长度为1,代表不是核心顶点,则输出key值为0,value为输入value的邻居顶点集。若长度为2,代表是核心顶点,则输出key值为1,以此将所有顶点进行标记;
[0104]
步骤3、将属性网络划分为多个子网络分配给不同计算单元处理;
[0105]
将属性网络数据分片,每个分片即为一个子网络;
[0106]
本实施例使用hadoop中的fileinputformat类将上一节生成的带有核心顶点标识的属性网络数据按行划分成多个inputsplit,每个inputsplit即为一个子图,本实施例中共分成10个子图,也可以更改参数自定义子图大小;
[0107]
下面基于差分多目标算法实现子网络社区划分优化,如图4所示,具体内容见步骤4和步骤5;
[0108]
步骤4、在计算单元上对每个子网络初始化差分算法的种群,实现对各子网络的社
区划分,具体步骤如下;
[0109]
步骤4-1、对差分算法种群中个体表示进行编码,使每个个体表示为子网络的一个社区划分方式;
[0110]
设定种群中第f个个体编码为xf=(x1,x2.....xn),其中,n为子网络中所有顶点的数量,xn的取值表示第n个顶点的社区编号;
[0111]
本实施例中,一个子网络(即一个子图)共有113489个顶点即用户,种群中第f个个体编码为xf=(x1,x2,

,x
113489
),其中,x1的取值表示用户1的社区编号,编号一致表示属于同一个社区;
[0112]
步骤4-2、随机初始化属性网络中各属性的权重,初始化种群中的每个个体,并根据邻居投票的原则更新顶点的社区编号,完成子网络社区的初步划分;
[0113]
步骤4-2-1、初始化属性网络中各属性的权重;
[0114]
随机初始化属性网络中各属性权重,并使所有属性的权重之和为1;
[0115]
步骤4-2-2、初始化个体;
[0116]
令每个顶点的社区编号等于其自身顶点编号,x1=1,
……
xn=n,相当于建立了n个社区;
[0117]
本实施例中,令每个顶点的社区编号等于其自身顶点编号,x1=1,
……
x
113489
=113489,相当于建立了113489个社区;
[0118]
步骤4-2-3、更新顶点的社区编号;
[0119]
依次遍历子网络中的顶点,若w(r(u)-r(v))等于0,则顶点u的社区编号等于顶点v的社区编号,即xu=xv,直接遍历下个顶点;
[0120]
否则根据邻居投票得出结构属性代表度vote最大时的社区编号cid作为该顶点u的社区编号,社区编号cid对顶点u的结构属性代表度如下公式所示:
[0121][0122]
其中,n(u)为u的邻居顶点集合,c(v)为v的社区编号,δ(u,v)为顶点u和v的结构相似性,w是所有属性的权重向量,r(u)、r(v)分别是顶点u、v的属性值;
[0123]
步骤4-2-4、迭代;重复迭代步骤4-2-3直至达到设定的迭代次数;
[0124]
步骤5、根据社区属性相似度和模块度两个社区检测量化指标并利用属性权重向量,对社区划分结果进行优化,具体步骤如下:
[0125]
步骤5-1、使用差分算法迭代生成新的个体,每个个体代表一种新的社区划分方式;
[0126]
步骤5-1-1、变异;使用改良的变异算子对个体进行变异,改良后的变异算子能够在离散问题上同时对多个个体变异;
[0127]
原始差分算法采用将种群中随机选择的两个个体的差向量作为第三个个体的进化方向的方法进行变异,这种变异策略使得差分进化算法效率更快,但是只适用于求解连续变量问题,对于社区检测这种离散编码的问题并不适用,本实施例中,改进变异策略来用于社区检测:随机选定三个个体x1、x2、x3,维度为113489(顶点个数),把x3作为变异基向量,并随机选择一个维度(即顶点)p,概率性的选择x1、x2中与顶点p社区编号相同的顶点,使x3中的这些顶点也与x3中顶点p的社区编号相同,得到变异后的基因x4,计算方式如下:
[0128]
x3'=f&(tran(x1,p)+tran(x2,p))
ꢀꢀ
(3)
[0129]
x4=h(x3,x3')
[0130]
f是变异算子,用于随机生成0或1的n维向量,&表示对每一维度进行与操作运算,tran(xf,p)是一个n维向量,tran(xf,p)将所有与第p个顶点具有相同社区编号的顶点挑出来,对应位置赋值为1,h(x3,x3')使x'3分量为0的维度x3保持不变,x3'分量为1的维度x3变成与其第p个顶点的社区编号一致,新生成的个体结合了x1、x2的优点生成最终的社区划分;
[0131]
步骤5-1-2、适应度计算;
[0132]
计算每个个体的第j个社区cj属性相似度和平均社区属性相似度sa,如下公式所示:
[0133][0134][0135][0136]
其中,s(u,v)是同社区的顶点u,v的属性相似度值,d是属性个数,w是属性权重向量,r是属性值,k是所有社区数量,是社区cj内的顶点数量;
[0137]
步骤5-1-3、交叉;
[0138]
采用二路交叉策略进行交叉操作,每次生成2个新个体;
[0139]
本实施例中采用二路交叉作为交叉算子,如图5所示,选取步骤5-1-1中的x1、x2、在步骤5-1-2所求对应的最大相似社区编号h1、h2以及变异后的x4,将x1中社区编号为h1的顶点,在x4中对应的位置的社区编号也全部更新为h1,产生新个体x5,同理,将x4所有社区编号为h2的基因在x4中对应的位置的社区编号也全部更新为h2,产生新个体x6;
[0140]
步骤5-1-4、子代生成;
[0141]
将交叉和变异生成的新个体构成的子代与父代一起送到步骤5-2,选择保留较优的个体;
[0142]
步骤5-2、使用非支配排序算法选择保留较优的个体进入下次迭代;
[0143]
将父代和子代种群合并,同时优化社区属性相似度值和模块度两个目标函数;
[0144]
步骤5-1-2中的社区属性相似度值,从属性角度衡量顶点的相似程度;
[0145]
模块度q,衡量社区内连接稠密,社区间连接稀疏的程度,如下公式所示:
[0146][0147]
其中,m为子网络的总边数;a
uv
表示子网络的顶点邻接矩阵中的元素,子网络中顶点之间有连接(边)则为1,否则为0;e是顶点的度数;σ(u,v)是顶点u,v的认同度函数,u,v在同一个社区为1,反之为0;
[0148]
采用非支配排序算法首先依照两个检测量化指标对父代和子代种群中的个体进行非支配排序,按照支配关系分配等级,并计算每个个体的拥挤距离,将个体按照非支配排序等级从高到低,拥挤距离从大到小的顺序排序,从前取出所需数量的个体形成下一代种
群继续迭代;
[0149]
本实施例中,依照两个检测量化指标对父代和子代种群中的个体进行非支配排序的具体过程是:选择当前的帕拉托前沿,将其标记其为最高等级1,然后忽略这些点继续寻找帕拉托前沿,标记第二高的等级,直到遍历完所有个体;
[0150]
本实施例中,对同一等级间的个体进行拥挤距离的计算,即寻找距离该个体最近的两个同等级的邻居,将这两个邻居的距离当做该个体的拥挤距离,如图6所示,目标空间上与个体i相邻的2个个体i+1和i-1之间的距离就是个体i的拥挤距离;
[0151]
步骤5-3、记录每一代的最优个体(解),结合各属性对当前社区的贡献度采用投票机制更新属性权重;
[0152]
属性对当前社区的贡献度定义如下:
[0153][0154]
其中,u是社区cj中的一个顶点,是社区cj中所有顶点在属性r
l
分量上的平均值,τ是设定阈值,r
l
(u)表示顶点u在属性r
l
分量上的取值;如果社区内对同一属性大半部分顶点投票值为1,表示该属性对于最后的社会划分效果有着较高的贡献,则应增大该属性的权重,反之则减少该属性的权重值;
[0155]
属性权重更新如下公式所示:
[0156][0157]
其中,是属性r
l
第t次迭代的权重,d是属性网络中属性数量,k是当前社区个数;
[0158]
由于属性初始权重和为1,整个属性权重自更新过程中所有属性的权重总和是保持不变的,随着选择的最优个体不断朝着社区划分效果最好的方向更新,属性的权重值根据属性影响程度的不同,自适应改变,从而进一步加快算法的迭代效率提高社区划分质量;
[0159]
步骤5-4、重复执行5-1到5-3,直到各子网络的社区划分都完成优化,输出各子网络社区划分结果;
[0160]
步骤6、根据各个计算单元返回的子网络社区划分结果及核心顶点标记,对社区划分结果进行合并,得到最终整个属性网络的社区划分结果;
[0161]
对于任一社区,依次遍历其他社区,利用核心顶点判断其是否和当前社区结构可达,若满足条件则将该社区与当前选择社区合并;
[0162]
合并社区时主要利用核心顶点合并,根据核心顶点的定义,其具有较高结构相似性的邻居顶点v∈n

(u)都是可以从u直接可达的,通过直接可达判断两个顶点是否为可达。根据社区的连通性定义可知,社区内的任意两个顶点都是可以由社区内至少同一个顶点可达,并且根据社区的极大性定义,只要从当前社区内的顶点可达的顶点都是该社区的成员,因此,本实施例在hadoop中,通过以下步骤合并:
[0163]
map阶段,读取社区划分结果的邻接表文件的每一行,每一行即子图的一个社区,对每一行遍历key中的核心顶点集的所有邻居,判断其是否为核心顶点,若是则将该顶点加入到输出的key值中,同理继续遍历该点的邻居,直到邻居中不包含没加入的核心顶点为
止,从而形成一个核心顶点集合,并将其排序,作为key发送,将社区中的所有顶点作为value发送,重复该步骤,直到将所有社区作为value发送。
[0164]
reduce阶段,map阶段中已经具有相同key值的key/value对发送到同一个reduce中,因此在reduce阶段主要负责将具有相同key的value进行合并,形成一个社区,即最终的社区划分结果。
[0165]
图7显示了在youtube数据集上,将本发明提出的结合属性信息和结构信息的大规模社区检测方法dw-decd与chang等人提出的经典图聚类算法pscan进行对比,pscan算法可处理大型真实图并具有较优的效率,分别以模块度,社区属性相似度和标准互信息nmi作为指标进行对比。模块度指标越高,表示社区内连接越稠密,社区间连接越稀疏;社区属性相似度值越大代表社区划分结果中每个社区间属性上越相似;youtube数据集存在真实社区划分,nmi值越接近1表示与真实社区划分越接近。其中,pscan算法在youtube数据集上模块度为0.46,社区属性相似度为0.44,nmi为0.61,而本发明方法dwdecd为0.52,0.73,0.72,从图中可以看出本发明提出的社区检测方法与pscan相比更加接近真实社区划分结果,准确率更高。
[0166]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1