基于混合近邻消息传播的并行社区发现算法

文档序号:9375789阅读:348来源:国知局
基于混合近邻消息传播的并行社区发现算法
【技术领域】
[0001] 本发明涉及社交网络上的社区发现领域,特别是一种基于近邻传播和并行计算的 大规模社区发现算法。
【背景技术】
[0002] 随着以微博、QQ空间、豆瓣网、时光网等为代表的Web2.0社交网络(Social Network)在国内外的飞速发展,人们已经越来越习惯于通过在线互动方式、虚拟交流方式 实现社会关系的创建和维护,主要的形式包括在线聊天、团购、评论、购物等。在虚拟交流过 程中,人们逐渐根据不同的兴趣爱好、生活习惯、成长背景等聚集成不同的社区。对这些社 交网络上的社区的识别与跟踪,在理论上是对复杂网络聚类研究的发展与丰富,在实践上 对目前大量基于社交网络的商业应用(如在线点评、团购网、智慧公交等)也有很高的价 值。
[0003] 现有的社区发现方法在静态社交网络中的社区发现方面已经取得一定成果,但仍 存在以下几个问题:首先,算法的时间与空间复杂度通常比较高,在处理大规模社交网络时 的时间开销和空间开销过高;其次,算法通常需要一次性读取整个网络,当网络规模较大 时,往往无法在单机上完成;最后,算法设计时通常只考虑串行步骤的执行,未引入并行计 算机制,可扩展性不强。
[0004] MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它极大 地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map (映射)函数,用来把一组键值对映射成一组新的键值对, 指定并发的Reduce (归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

【发明内容】

[0005] 有鉴于此,我们提出了一种同时复用网络中的近邻和全局信息的近邻传播算法。 在设计算法时就考虑到算法步骤的可并行性,采用MapReduce模型中的map算子和reduce 算子实现算法的所有步骤,从而使算法具备良好的扩展性、并发性。此外,借助多机集群,我 们设计的算法能够有效地对大规模社交网络进行处理。
[0006] 本发明采用以下算法实现:该算法主要包括以下步骤:步骤Sl :读取原始数据,获 取网络节点及节点近邻信息;步骤S2 :根据节点及近邻相似度信息进行并行相似度计算; 步骤S3 :初始化迭代次数iter = 1,代表点集Setf3= Φ ;步骤S4 :支持度消息的并行计算 及更新;步骤S5 :适选度消息的并行计算更新;步骤S6 :代表点的并行计算,及SetJ勺更 新;步骤S7 :若Se%不是空集且相邻两次迭代的Sete包含的元素完全相同,则迭代停止条 件满足;否则,判断迭代次数iter是否到达最大迭代次数maxlter,若是,则迭代停止条件 满足,其它情况表示迭代停止条件不满足,若迭代停止条件不满足,则iter = iter+Ι,返回 步骤S4 ;步骤S8 :根据代表点信息输出社区结构。
[0007] 在本发明一实施例中,所述步骤S2包括以下具体步骤:步骤S20 :将原始数据组织 成(i, NB(i))的形式,其中i表示节点,NB⑴节点的近邻集合;步骤S21 :map运算:输入 KEY=i,VALUE = NB(i)4liaKEY=(i,k),VALUE = NB(i),kSi^W^.^3*m2.rAH"r.A 运算:输入 KEY = (i,k),VALUE = (NB ⑴,NB (k)),根据公式 4
算 i 和 k 的相似度 s(i,k),输出 KEY = i,VALUE = (k,s(i,k)),以及 KEY = k,VALUE = (i,s(i, k));步骤 S23 :map 运算:输入 KEY = i,VALUE = (k, s(i, k)),输出 KEY = i,VALUE =(k,s(i,k));步骤 S24:reduce 运算:输入 KEY = i,VALUE= 〇^,8(;[,10)集合,输出1^¥ =i,VALUE = (k,s(i,k))集合。
[0008] 在本发明一实施例中,步骤S4包括以下步骤:步骤S40 :支持度消息的格式为 (i, r (i, k)),r (i, k)为节点i对其近邻k的支持度,将所述r (i, k)初始化为0 ;步骤S41 : map 运算:输入 KEY = i,VALUE = (k, s (i, k)),以及(k, a(i, k)),a(i, k)为适选度,根据公 式:r(i,k) - s(i,k)-maxk, s.t.k,#kn k, ENB(i) {a(i,k')+s(i,k')}计算 r(i,k),输出 KEY = i,VALUE= (k,r(i,k));步骤 S42:reduce 运算:输入 KEY = i,VALUE= (k,r(i,k))集 合,输出 KEY = i,VALUE = (k,r(i,k))集合。
[0009] 在本发明一实施例中,步骤S5包括以下步骤:步骤S50 :适选度消息的格式为 (i, a(i, k)),a(i, k)表示节点k适合作为其近邻i代表的程度,将a(i, k)初始化为0 ; 步骤 S51 :map 运算:输入 KEY = i,VALUE = (k, r (i, k))集合,输出 KEY = k,VALUE = (i,r(i,k));步骤 S52:reduce 运算:输入 KEY = k,VALUE= (;[,1'(;[,10)集合,输出1^¥ =k,VALUE = (i,r (i,k))集合;步骤 S53 :map 运算:输入 KEY = k,VALUE = (i,r (i,k)) 集合,根据公i1
计算a(i, k),输出KEY =i,VALUE = (k, a (i, k));步骤 S54 :reduce 运算:输入 KEY = i,VALUE = (k, a (i, k))集 合,输出 KEY = i,VALUE = (k,a(i,k))集合。
[0010] 在本发明一实施例中,步骤S6包括以下步骤:步骤S61 :map运算:输入KEY = i, VALUE = (k,r(i,k))集合及(k,a(i,k))集合,输出 KEY = i,VALUE = (r(i,k),a(i,k)); 步骤362抑(11^运算:输入1^¥=;[,'\^1^=(1'(;[,10,3(;[,10)集合,根据公式6(;0 = argmaxks.t.kE NB(i) {r(i, k)+a(i, k) |r(i, k)+a(i, k)>0}计算 k = e(i),同时将 k 加入集合 Sete,,输出 KEY = i,VALUE = k。
[0011] 在本发明一实施例中,步骤S8中的根据代表点信息输出社区结构的过程 为:根据代表点信息输出社区结构根据代表点集361^及e (i) = argmax ks. t.kE NBW {r(i, k)+a(i, k) |r(i, k)+a(i, k)>0}得到的每个节点i的代表点e(i),将代表点相同的节 点划分到同一个社区Ck,使从属于同一个社区(;的成员的代表点均指向同一个代表点k,再 输出生成的社区集合。
[0012] 本发明的有益效果是将混合了局部与全局消息传播的近邻传播方法与基于 MapReduce模型的并行计算方法相结合,应用于大规模社交网络中的社区发现,从而能够为 当前日益蓬勃发展的Web2.0为特征的社交网络应用提供极具商业价值的社区、兴趣团体 等信息,同时也为复杂网络聚类在社交网络分析方向的发展提供有益补充。
【附图说明】
[0013] 图1是本发明的流程图。
【具体实施方式】
[0014] 下面结合附图和具体实施例对本发明做进一步说明。
[0015] 本发明提供了一种基于近邻传播和并行计算的大规模社区发现算法,其主要流程 图参见图1。该算法主要包括以下步骤:
[0016] 步骤Sl :读取原始数据,获取网络节点及节点近邻信息;
[0017] 步骤S2 :根据节点及近邻相似度信息进行并行相似度计算;
[0018] 步骤S3 :初始化迭代次数iter = 1,代表点集Setf3= Φ ;
[0019] 步骤S4 :支持度消息的并行计算及更新;
[0020] 步骤S5 :适选度消息的并行计算更新;
[0021] 步骤S6 :代表点的并行计算,及SetJ^更新;
[0022] 步骤S7 :若Se%不是空集且相邻两次迭代的Sek包含的元素完全相同,则
[0023] 迭代停止条件满足;否则,判断迭代次数iter是否到达最大迭代次数maxlter,
[0024] 若是,则迭代停止条件满足,其它情况表示迭代停止条件不满足,若迭代停
[0025] 止条件不满足,则iter = iter+Ι,返回步骤S4 ;
[0026] 步骤S8 :根据代表点信息输出社区结构。
[0027] 所述步骤S2包括以下具体步骤:
[0028] 步骤S20 :将原始数据组织成(i,NB(i))的形式,其中i表示节点,NB(i)节点的近 邻集合;
[0029] 步骤 S21 :map 运算:输入 KEY = i,VALUE = NB ⑴,输出 KEY = (i, k),VALUE = NB⑴,k为i的近邻;
[0030] 步骤 S22 :reduce 运算:输入 KEY = (i,k),VALUE = (NB ⑴,NB (k)),根据公式:
汁算 i 和 k 的相似度 s(i,k),输出 KEY = i,VALUE= (k,s(i,k)), 以及 KEY = k,VALUE = (i,s (i,k));
[0031] 步骤 S23 :map 运算:输入 KEY = i,VALUE = (k,s (i,k)),输出 KEY = i,VALUE = (k, s(i, k));
[0032] 步骤 S24 :reduce 运算:输入 KEY = i,VALUE = (k, s (i, k))集合,输出 KEY = i, VALU
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1