重叠社区并行发现的方法及系统的制作方法

文档序号:9547205阅读:333来源:国知局
重叠社区并行发现的方法及系统的制作方法
【技术领域】
[0001 ] 本发明涉及复杂网络领域,具体而言,涉及一种基于MapReduce (Map,映射; Reduce,化简;MapReduce是Google提出的一个软件架构,用于大规模数据集的并行运算) 的重叠社区并行快速发现的方法及系统。
【背景技术】
[0002] 虚拟社区是指基于互联网的社会群聚现象,它构成了一定规模的个体关系网络, 在虚拟的网络中聚合了相同兴趣的用户,使他们能够相互提出,表达,交换自己的观点,不 同社区的用户也可能交互。社区可以为用户提供及时的、可靠的、有价值的信息,同时还也 有利于商家准确地找到客户。然而社区一般都是隐藏在众多繁杂的关系和连接背后,并不 是显性存在的,这就需要研究人员使用相关方法和技术把隐藏的社区发现和挖掘出来,继 而可以利用发现的社区关系为所有个体提供个性化的应用和服务。
[0003] 近年来随着网络技术的高速发展和普及应用,社区发现已经发展成为一个跨学科 的研究热点问题,社会学、教育学、心理学等多个学科的研究人员从不同角度对它展开了系 列研究。从更广义的角度来看,现实世界的大部分系统都可以通过网络来描述,网络是由节 点的集合和这些节点的关系,也就是连接节点的边集合所组成。大量实际数据都表明复杂 网络通常都是异构的,也就是说它是由各种不同类型的节点所构成,其中同一类型的节点 之间关联较多,而属于不同类型的节点之间连接相对较少。
[0004] 对于大型复杂网络,常规社区发现方法的设计原理和工作模式无法快速实时完 成。

【发明内容】

[0005] 本发明提供一种基于MapReduce的重叠社区并行发现方法及系统,用以快速检索 大型复杂网络中的社区。
[0006] 为达到上述目的,本发明提供了一种重叠社区并行快速发现方法,包括以下步 骤:
[0007] Sl :从数据集文件中读取节点分布网络图;创建社区集合;将所述节点分布网络 图与所述社区集合相关联;
[0008] S2 :设定初始社区的个数为η ;计算所述节点分布网络图中每个节点的度数,并获 取前η个节点度数最高的节点分别作为η个初始社区的中心节点;此时每个初始社区的聚 集度为〇 ;η个初始社区储存于所述社区集合;其中η为大于或等于1的自然数;
[0009] S3 :对上述η个初始社区的每一个同时执行以下程序:将所述中心节点的直接相 邻节点选为该社区的候选成员节点,并将所述候选成员节点加入该社区的候选成员集合; 依次判断所述候选成员集合中的所述候选成员节点是否属于该社区,将属于该社区的节点 并入该社区,对属于该社区的节点的直接相邻节点选为该社区的候选成员节点,重复该步 骤;对不属于该社区的节点移出所述候选成员集合并不作处理;将该社区数据存入所述社 区集合;
[0010] S4:判断所述节点分布网络图中是否有节点未并入任何社区,若是,则对未并入任 何社区的节点重复执行步骤32、53、54,直至所述节点分布网络图中的所有节点都属于一个 社区;
[0011] S5:对所述社区集合中的所有社区两两计算其社区重叠度,若两个社区的所述社 区重叠度大于设定阈值,则将该所述社区重叠度大于设定阈值的两个社区合并为一个社 区,并更新所述社区集合的相应数据;
[0012] S6:对所述社区集合中任意两个具有公共节点的社区,计算将其合并为一个新社 区的新社区聚集度,将该新社区聚集度分别与合并前该两个具有公共节点的社区的所述社 区聚集度进行对比,若该新社区聚集度分别大于合并前该两个具有公共节点的社区的所述 社区聚集度,则将该两个具有公共节点的社区合并为一个新社区,该新社区聚集度为该两 个具有公共节点的社区合并后的新社区的社区聚集度,并更新所述社区集合的相应数据。
[0013] 其中,步骤S3中,对上述η个初始社区的每一个同时执行的程序以多线程并行方 式实现,判断所述候选成员集合中的节点是否属于该社区的方法是:计算每个所述候选成 员节点的节点贡献度;将所述节点贡献度为1的节点并入该社区,并计算该社区的初始社 区聚集度;对于所述节点贡献度不为1的节点,根据其所述节点贡献度由高到底进行排序, 并从其中所述节点贡献度最高的节点开始,依次假设所述候选成员集合中的节点属于该社 区并计算该社区的第一中间社区聚集度,假设不将所述候选成员集合中的节点并入时该社 区的聚集度为初始聚集度,该社区若该第一中间社区聚集度大于该初始社区聚集度,则将 相应节点并入该社区;若该第一中间社区聚集度小于该初始社区聚集度,则相应节点及其 后面的节点不并入该社区,当没有所述第一中间社区聚集度大于该初始社区聚集度时判断 为该社区发现完毕,该初始社区聚集度即为该社区的社区聚集度。
[0014] 其中,步骤S3中,对上述η个初始社区的每一个同时执行的程序在MapReduce框 架下实现,判断所述候选成员集合中的节点是否属于该社区的方法是:
[0015] 分别假设所述候选成员集合中的所有节点属于该社区,同时分别计算所述候选成 员集合中的节点属于该社区时该社区的第二中间社区聚集度,并将所述候选成员集合中的 所有节点按照所述第二中间社区聚集度从大到小进行排序,假设不将所述候选成员集合中 的节点并入时该社区的聚集度为初始聚集度,依次用各节点的所述第二中间社区聚集度与 该初始社区聚集度比较,若节点的所述第二中间社区聚集度大于该初始社区聚集度,则将 相应的节点并入该社区;若该第二中间社区聚集度小于该初始社区聚集度,则相应节点机 器后面的节点不并入该社区,当没有所述第一中间社区聚集度大于该初始社区聚集度时判 断为该社区发现完毕,该初始社区聚集度即为该社区的社区聚集度。
[0016] 其中,所述节点贡献度的计算方法是:
[0017] 假设节点V1的所述节点贡献度为c,社区η,内的节点个数为N,节点V1属于社区 η,,节点V1与社区n]内部其他节点连接的边数为Lin,节点V 1与社区n]外节点连接的边数 为Lciut,则节点V1的所述节点贡献度c由以下公式计算:
[0019] 其中,i为从1到N-I的自然数,j为从1到η的自然数。
[0020] 其中,所述社区聚集度的计算方法是:
[0021] 假设社区Ii1的所述社区聚集度为M,社区η,内的节点个数为N,节点V 1属于社区 Iij,且节点V1到社区中心节点V。的距离为DW1, V。),节点V1与社区Iij内部其他节点连接的 边数为Lin,节点V 1与社区η,外节点连接的边数为Lciut,则社区η,的所述社区聚集度为M由 以下公式计算:
[0023] 其中,i为从1到N-I的自然数,j为从1到η的自然数;
[0024] 所述初始社区聚集度、所述中间社区聚集度及所述新社区聚集度的计算方法都与 所述社区聚集度的计算方法相同。
[0025] 其中,两个社区的所述社区重叠度的计算方法是:
[0026] 假设两个社区为A和Β,社区A的节点集合记为Ca,社区B的节点集合记为C b,社 区A和社区B的所述社区重叠度记为Oab,则社区A和社区B的所述社区重叠度O ab由以下 公式计算:
[0028] 其中,社区A和社区B是两个不同的社区。
[0029] 此外,本发明还提供一种重叠社区并行快速发现系统,包括:
[0030] 社区发现准备模块,用于:从数据集文件中读取节点分布网络图;创建社区集合; 将所述节点分布网络图与所述社区集合相关联;
[0031] 初始社区确定模块,用于:设定初始社区的个数为η ;计算所述节点分布网络图中 每个节点的度数,并获取前η个节点度数最高的节点分别作为η个初始社区的中心节点;此 时每个初始社区的聚集度为〇 ;η个初始社区储存于所述社区集合;其中η为大于或等于1 的自然数;
[0032] 社区并行发现模块,用于:对上述η个初始社区的每一个,将所述中心节点的直接 相邻节点(即有边相连的节点)选为该社区的候选成员节点,并将所述候选成员节点加入 该社区的候选成员集合;计算每个所述候选成员节点的节点贡献度;将所述节点贡献度为 1的节点并入该社区,并计算该社区的初始社区聚集度;对
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1