CN104077280A - 社区发现并行化方法和系统、主节点和运算节点设备 - Google Patents
社区发现并行化方法和系统、主节点和运算节点设备 Download PDFInfo
- Publication number
- CN104077280A CN104077280A CN201310096323.0A CN201310096323A CN104077280A CN 104077280 A CN104077280 A CN 104077280A CN 201310096323 A CN201310096323 A CN 201310096323A CN 104077280 A CN104077280 A CN 104077280A
- Authority
- CN
- China
- Prior art keywords
- community
- modularity
- classification
- module
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了社区发现并行化方法和系统、主节点和运算节点设备,涉及社交网络系统中分析关系系统。本发明公开的方法包括:根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度;主节点将所有用户随机分为p个大小相等的社区并派给p个运算节点进行融合操作;主节点根据b个社区之间的链接关系,进行融合操作得到k个社区,并计算社区划分结果的模块度;主节点将k个社区合并成为大小相似的p个社区,重新派给p个运算节点进行粗分类以及融合操作,直到k个社区的模块度小于阈值时,得到社区发现的最终结果。本发明还公开了社区发现并行化系统、主节点及运算节点设备。本申请技术方案具有更高的模块度和分类精度。
Description
技术领域
本发明涉及社交网络系统中分析关系系统,尤其能够利用超大规模社交网络的海量交互信息完成社区发现的方案。
背景技术
在大型复杂网络中,往往存在着复杂的社区结构,比如社交网站或者论坛网站中存在着依据相似的社会背景或者兴趣爱好所组成的社会团体,万维网中存在着具有相似内容功能类似网站。如何根据社交网络中海量的人物交互关系或者网站间的链接数相似性,发现网络中的社区结构已经成为了数据挖掘领域的一个热点研究方向。
社区发现的目标就是根据网络中点与点之间的关系,自动的将网络划分为若干个社区,使得社区内的连接较为紧密,社区间的连接较为稀疏。Newman提出的模块度(Modularity)已经成为了一个广泛应用的社区发现系统的评价标准。目前流行的社区发现系统中基于凝聚思想的CNM算法的复杂度也有O(mdlogn),其中d为图的深度。我们可以发现传统的社区发现系统由于现在网络的规模越来越大,系统的每个步骤独立性不强,使得系统无法并行快速高效的满足社交网站社区发现的需求。
常见的并行计算的框架有MPI(Message-Passing Interface)和MapReduce。MPI是一种消息传递编程接口规范。消息传递指数据通过进程之间的协同从一个进程的地址空间传递到另一个进程,采用MPI模型的程序设计正是通过进程之间的这种消息传递来达到并行化的目的。MapReduce是Google提出的并行计算和数据处理的编程模型,采用MapReduce框架的程序需定义自身的Map函数与Reduce函数。Map阶段,Map函数产生键值对(key/value)。Reduce阶段,具有相同键(key)的键值对被传递到Reduce函数。MPI模型可以根据系统硬件配置修改并行化步骤,但是没有错误处理,任务调度的现成的封装,基于MapReduce的Hadoop框架数据的分布原理是封装好的,并没有根据硬件配置和系统需求进行优化。
发明内容
本发明所要解决的技术问题是,提供一种社区发现并行化方法和系统、主节点和运算节点设备,以提高社交网络社区发现系统对于大规模数据处理的效率。
为了解决上述技术问题,本发明公开了一种社区发现并行化方法,其包括:
链接强度计算模块根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示并存储;
主节点将所存储的用户随机分为p个大小相等的社区,将p个社区对应的有权图的子图分别配置给p个运算节点,作为初始的社区划分的结果;
每个运算节点上配置相同的粗分类模块的任务,每个任务独立的完成处在对应的同一子图中的点的融合操作,以将运算节点上的子图划分成多个社区;
主节点上的社区融合模块根据所有运算节点的粗分类模块划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度;
主节点上的任务合并模块将k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,重新经过各运算节点的粗分类模块划分以及主节点上的社区融合模块融合操作,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果。
较佳地,上述方法中,每个运算节点上粗分类模块的任务独立的完成处在对应的同一子图中的点的融合操作的过程如下:
将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变:
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak;
重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程。
较佳地,上述方法中,所述主节点上的社区整合模块计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
较佳地,上述方法中,所述链接强度计算模块,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示指:
对于无权图点与点的链接强度,所述链接强度计算模块设置为0或1;
对于真实的网络社区,所述链接强度计算模块采用如下公式计算点与点的链接强度:
其中,ri(i=1,2,3)分别表示微博中用户i,j的好友关系,用户i,j之间At的次数以及用户i,j之间评论的次数,k表示各交互信息的权重。
本发明还公开了一种社区发现并行化系统,包括链接强度计算模块、主节点和p个运算节点,其中:
链接强度计算模块,根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示并存储;
主节点,将所存储的用户随机分为p个大小相等的社区,作为初始的社区划分,并将初始划分的p个社区对应的有权图的子图分别配置给p个运算节点,,以及根据所有运算节点划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度,并将k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,将各运算节点重新划分的社区进行融合操作,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果;
运算节点,对初始划分的同一子图中的点进行融合操作,以将该子图划分成多个社区,以及对重新设置的子图的点进行整合操作
较佳地,上述系统中,所述运算节点对子图中的点进行融合操作的过程如下:
将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变:
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak;
重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程。
较佳地,上述系统中,所述主节点计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
较佳地,上述系统中,其特征在于,所述链接强度计算模块,对于无权图点与点的链接强度,设置为0或1;
对于真实的网络社区,采用如下公式计算点与点的链接强度:
其中,ri(i=1,2,3)分别表示微博中用户i,j的好友关系,用户i,j之间At的次数以及用户i,j之间评论的次数,k表示各交互信息的权重。
本发明还公开了一种用于社区发现并行化的主节点设备,包括社区融合模块和任务合并模块,其中:
社区融合模块,根据所有运算节点初始划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度,以及根据所有运算节点再次划分的b个社区之间的链接关系,再次进行融合操作,得到k个社区,计算这k个社区划分结果的模块度;
任务合并模块,将所述社区融合模块融合操作得到的k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果。
较佳地,上述设备中,所述社区融合模块计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2,
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
本发明还公开了一种用于社区发现并行化的运算节点设备,包括第一模块和第二模块,其中:
所述第一模块,将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
所述第二模块,在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变,并重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程;
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak。
本申请技术方案与现有技术相比具有以下优点:
(1)根据凸函数的性质,每次迭代的分类结果,每次迭代时分类结果的模块度不会降低。经过实例验证经过6~7次迭代其社区划分的效果就会优于传统的基于凝聚思想的社区划分的效果,即具有更高的模块度,具有更好的分类精度。
(2)本申请技术方案修改了贪婪搜索融合的融合路径,使得迭代步骤可以划分为p独立的任务处理单元(粗分类模块)并行计算,通过任务合并模块的操作使得每次迭代步骤的并行化计算是负载均衡的。这里通过任务合并模块的操作,修改了原始Hadoop框架,不根据数据大小进行任务分配,利用任务合并模块完成任务的分配。p根据用户的计算集群的配置进行设定,具有良好的可扩展性。
(3)本申请的优选方案的时间复杂度为O(md/p3×log(n/p)),由于子图的稀疏性,其复杂度为O((nlogn)/p3×log(n/p))。其中n为社交网络中点的个数,m为边的个数,d为图的最大深度。可以发现本申请技术方案极大的提高了传统凝聚算法的运算速度。比传统的社区发现系统更加适应于海量规模的社交网络数据。
本申请技术方案尤其适用如下场景:
(1)有真实社会关系特性的大型社交网络。能够根据用户的现有社交关系,发现用户所在社区,并将社区中的用户推荐给特定用户。
(2)通过网络的层次结构能够优化网络的储存性能,可以根据网络的层次结构快速查找网络成员间的关系,也可以作为定向推荐系统的一个参考标准。
附图说明
图1是本发明的系统流程框图;
图2是链接强度计算模块流程框图;
图3是粗分类模块在实际应用中采用的最大堆的结构完成中间迭代以及最大值的求解示意图;
图4描述了随着社区规模的增大,本专利的并行算法和传统的凝聚算法在运行时间以及分类结果模块度的比较示意图;
图5是对于10万人的社区分类效果图;
图6是社区规模变大时本专利系统和传统的社区发现系统性能的对比情况示意图;
图7是本专利在真实的大规模数据应用场景下的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文将结合附图对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
实施例1
本实施例提供一种社区发现并行化方法,包括如下操作:
步骤1:链接强度计算模块根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度,根据计算的链接强度得到能表示网络特性的有权图的稀疏表示并存储。
在社交网络中,可以根据网络中人与人的交互信息,定义链接强度,将得到的有权图进行归一化得到Laplacian矩阵的稀疏化表示,该步骤中,将此稀疏化表示放置在Hadoop框架下的分布式文件系统(HDFS)中即可。
步骤2:Master节点(即主节点)将配置在HDFS中的用户随机分为p个大小相等的社区,将p个社区对应的有权图的子图分别配置给p个运算节点,作为初始的社区划分的结果。
这里为了充分利用集群的运算性能,可将p设置为略小于集群中所有处理器的总和。
该步骤还将网络中处于相同社区的点储存在同一运算节点的分布式文件系统中。且每个社区以及其链接的数据都分布式储存在每个运算节点上。
步骤3:利用Hadoop框架,在每个运算节点(Worker)上配置相同的粗分类模块的任务(TaskTracker),每个TaskTracker独立的完成处在对应的同一子图中的点的融合操作,从而将此运算节点上的子图划分成多个社区。
该步骤中,粗分类模块将运算节点上的子图中的点先看成独立的点,再融合得到子图的划分。而每个子图中每两个类别的融合都能对全局模块度贡献达到最大。通过计算可以证明子图中点的融合对模块度的贡献与子图间的链接无关,所以该步操作是十分适宜于并行化的。该步的操作相当于对每个子图都进行了一次社区划分,最终得到b个社区C(b)={c1,c2,…,cb}。
步骤4:主节点上的社区融合模块利用步骤3中所有运算节点划分得到的共b个社区之间的链接关系,再进行一次融合过程,可以得到k个社区,C(k)={c1,c2,…,ck},并计算C(k)划分结果的模块度。
其中,社区之间的链接关系指社区间用户的链接总和。
步骤5:由于社交网络的规模较大,所以理想社区规模k会远大于处理器数目p。这里主节点上的任务合并模块将k个社区划分为p类,使得类别的规模保持相当。这里可以使用贪心算法,将k个社区按照社区规模从大到小排序,不断将第p+1大的社区和第p大的社区进行融合,最终得到的p个社区即为所求。于此同时将生成的p个社区的数据块分布在对应节点的文件系统中。
步骤6:重复步骤3到5,步骤5中的得到的社区划分结果作为步骤3的输入。当步骤5中得到的模块度的变化小于一个阈值则停止迭代。当前迭代中步骤4得到的分类结果C(k)即是社区发现的最终结果。
整个聚类过程步骤3中,每个Worker上的TaskTracker独立的完成了对于对应的文件系统中的数据块的处理,粗分类模块的处理过程如下:
(1)将子图中每个点看成独立的一个类别,初始化两个类别融合对全局模块度的贡献值。将每个融合模式以及对应的贡献值放入最大堆中。
(2)在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别融合,并变化与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变。这种数据结构更新和插入操作的复杂度为O(logn)极大的降低的每次迭代求解最大值的复杂度。
(3)重复上一步的操作,可以证明该子图对网络模块度的贡献的随着迭代次数增加的变化曲线是一个凸函数,根据凸函数的性质当最大堆中最大的贡献值为负数,则迭代停止。
所有的计算节点得到的分类结果构成步骤3中的b个社区。
整个聚类过程步骤4中,Master上的社区融合模块完成了对步骤3中的聚类结果的进一步融合。其具体操作过程和粗分类模块类似,但是初始化两个类别融合对全局模块度的贡献值需要按如下公式进行:
ΔQij=eij/2m-2aiaj/(2m)2
其中αi,αj表示第i和第j个类别中所有点的度的和,eij表示两个类别间链接的权重总和。
下面假设在具有10个节点的Mapreduce分布式计算平台上进行上述并行化社区发现方法。本实例采用两个数据集进行验证。一个是通用的测试社区发现系统的基准图,其是仿真产生的满足社交网络小世界特性的10万人的关系数据,是一个无权的网络。另一个数据集是一个从新浪微博抓取到的,具有160万人,约2亿条边的社交网络。其按照图1的系统框图完成社区发现的功能,主要包括链接强度计算模块,运算节点上的粗分类模块,主节点上的社区融合模块和任务合并模块。其中,粗分类模块中实现系统的并行化。其具体实现步骤如下:
步骤101,链接强度计算模块(如图2所示),完成社交网络中链接强度的量化,其根据原始输入计算网络中点与点的链接强度。
对于无权图点与点的链接强度可以简单的设置为0和1,对于真实的网络社区,可采用下面公式计算点与点的链接强度:
其中,ri(i=1,2,3)分别表示微博中用户i,j的好友关系,用户i,j之间At的次数以及用户i,j之间评论的次数,k表示各交互信息的权重。可以通过MapReduce的归并操作,完成权重的计算。在Map端合发射人与人关系对为键各种交互信息为值的键值对,在Reduce端完成相同关系对的合并以及链接强度的计算。
步骤102,在主节点上将网络中的点随机分成p个类别,利用网络将随机分类的结果用序列文件写入到HDFS(Hadoop框架下的分布式文件储存系统)中。即将随机划分的p个社区对应的有权图的子图分别配置给p个运算节点。
步骤103,各运算节点上的粗分类模块(如图1所示)并行化完成社区的初步凝聚。
该步骤中,每个运算节点配置相同的粗分类模块完成本地文件系统中对应子图的社区划分,需要说明的是设置Hadoop框架Map任务只操作本地数据块。具体地,粗分类模块进行的初步凝聚操作包括如下步骤:
a、将子图中每个点看成独立的一个类别Ci={Vi},初始化两个点融合对全局模块度的贡献值:
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度。将得到的两类融合的贡献度插入到最大堆中。
b、在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合(比如融合第i和第j个类别,),并根据下面的公式变化与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变。
类别k如果和类别i,j都有连接,则:ΔQ′jk=ΔQik+ΔQjk
类别k如果和类别i有连接,和j无连接,则:ΔQ′jk=ΔQik-2ajak
类别k如果和类别j有连接,和i无连接,则:ΔQ′jk=ΔQjk-2aiak
c、重复上一步的操作,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程。分类的类别号为键所在类别的点集为值的键值对作为该Reduce任务的输出,生成b个社区。
图3表示了粗分类模块在步骤103中的具体过程,在实际应用中采用了最大堆的结构来完成中间迭代以及最大值的求解过程。
步骤104,主节点上的社区融合模块对所有运算节点的粗分类模块得到的b个社区再进行一次融合操作。
该步骤具体操作过程和粗分类模块类似,但是初始化两个类别融合对全局模块度的贡献值需要按如下公式进行:
ΔQij=eij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个类别中所有点的度的和,eij表示两个类别间链接的权重总和。这里b个社区之间的关系eij可以通过一个MapReduce任务完成。具体在Map端将点对以及点链接权重转化为类别号的关系对以及权重,在Reduce端进行合并。得到k个社区。
步骤105,为了负载均衡,如果k的值比处理器数p要大(对于社交网站的海量数据都能满足这一条件),主节点上的任务合并模块将k个社区融合为p类,重新放置在每个运算节点的文件系统中,目标使得每个类别的规模保持相当。
该步骤可以使用贪心算法,将k个社区按照社区规模从大到小排序,不断将第p+1大的社区和第p大的社区进行融合,最终得到的p个社区即为所求。
重复图1中的步骤103到步骤105,步骤五中的得到的社区划分结果作为步骤三的输入。观察步骤四中得到的k个社区的模块度的变化。当模块度的值增长小于0.001则停止迭代。当次迭代中步骤四的输出即为最终的输出结果。对于10万人的社区,其每步迭代的累积时间和模块度变化如图4所示,分类效果图如图5所示。图6表示了当社区规模变大时该系统和传统的社区发现系统性能的对比情况。
结合说明书发明内容中对于复杂度的分析,本并行化方法的复杂度为复杂度为O((nlogn)/p3×log(n/p)),远小于传统的凝聚方法。结合图4和图6可以发现,本方法在运行速度以及分类效果上都远好于传统的凝聚方法。图7说明了对于真实的大规模数据本发明的方法也是可行有效的。
实施例2
本实施例公开一种社区发现并行化系统,至少包括链接强度计算模块、主节点和p个运算节点。
其中,链接强度计算模块,根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示并存储;
需要说明的是,上述链接强度计算模块,对于无权图点与点的链接强度,可以设置为0或1,而对于真实的网络社区,采用如下公式计算点与点的链接强度:
其中,ri(i=1,2,3)分别表示微博中用户i,j的好友关系,用户i,j之间At的次数以及用户i,j之间评论的次数,k表示各交互信息的权重。
主节点,将所存储的用户随机分为p个大小相等的社区,作为初始的社区划分,并将初始划分的p个社区对应的有权图的子图分别配置给p个运算节点,,以及根据所有运算节点划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度,并将k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,将各运算节点重新划分的社区进行融合操作,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果;
上述主节点计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2,
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
运算节点,对初始划分的同一子图中的点进行融合操作,以将该子图划分成多个社区,以及对重新设置的子图的点进行整合操作。
具体地,上述运算节点对子图中的点进行融合操作的过程如下:
将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变:
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak;
重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程。
实施例3
本实施例提供一种用于社区发现并行化的主节点设备,包括有社区融合模块和任务合并模块。
社区融合模块,根据所有运算节点初始划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度,以及根据所有运算节点再次划分的b个社区之间的链接关系,再次进行融合操作,得到k个社区,计算这k个社区划分结果的模块度;
具体地,社区融合模块计算C(k)划分结果的模块度时,可按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2,
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
任务合并模块,将社区融合模块融合操作得到的k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果。
实施例4
本实施例介绍一种用于社区发现并行化的运算节点设备,其包括第一模块和第二模块。
第一模块,将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,Wij表示两点间的链接强度;
第二模块,在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变,并重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程;
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak。
从上述实施例可以看出,本申请技术方案对超大规模的社交网络进行了处理,采用本申请技术方案可以快速的对于超大规模的社交网络进行社区发现,得到层次的社区发现的结果。并且本申请技术方案使得每个模块更加独立,可以分布式进行处理,并且进一步改造了Hadoop框架,能够更好的适应系统的硬件配置以及系统的需求,具有更好的可扩展性。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种社区发现并行化方法,其特征在于,该方法包括:
链接强度计算模块根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示并存储;
主节点将所存储的用户随机分为p个大小相等的社区,将p个社区对应的有权图的子图分别配置给p个运算节点,作为初始的社区划分的结果;
每个运算节点上配置相同的粗分类模块的任务,每个任务独立的完成处在对应的同一子图中的点的融合操作,以将运算节点上的子图划分成多个社区;
主节点上的社区融合模块根据所有运算节点的粗分类模块划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度;
主节点上的任务合并模块将k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,重新经过各运算节点的粗分类模块划分以及主节点上的社区融合模块融合操作,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果。
2.如权利要求1所述的方法,其特征在于,每个运算节点上粗分类模块的任务独立的完成处在对应的同一子图中的点的融合操作的过程如下:
将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变:
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak;
重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程。
3.如权利要求2所述的方法,其特征在于,所述主节点上的社区整合模块计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2,
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
4.如权利要求1至3任一项所述的方法,其特征在于,所述链接强度计算模块,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示指:
对于无权图点与点的链接强度,所述链接强度计算模块设置为0或1;
对于真实的网络社区,所述链接强度计算模块采用如下公式计算点与点的链接强度:
其中,ri(i=1,2,3)分别表示微博中用户i,j的好友关系,用户i,j之间At的次数以及用户i,j之间评论的次数,k表示各交互信息的权重。
5.一种社区发现并行化系统,其特征在于,该系统包括链接强度计算模块、主节点和p个运算节点,其中:
链接强度计算模块,根据社交网站数据库中用户的交互信息,计算网络中点与点的链接强度,得到能表示网络特性的有权图的稀疏表示并存储;
主节点,将所存储的用户随机分为p个大小相等的社区,作为初始的社区划分,并将初始划分的p个社区对应的有权图的子图分别配置给p个运算节点,,以及根据所有运算节点划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度,并将k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,将各运算节点重新划分的社区进行融合操作,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果;
运算节点,对初始划分的同一子图中的点进行融合操作,以将该子图划分成多个社区,以及对重新设置的子图的点进行整合操作。
6.如权利要求5所述的系统,其特征在于,所述运算节点对子图中的点进行融合操作的过程如下:
将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变:
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak;
重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程。
7.如权利要求6所述的系统,其特征在于,所述主节点计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2,
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
8.如权利要求5至7任一项所述的系统,其特征在于,所述链接强度计算模块,对于无权图点与点的链接强度,设置为0或1;
对于真实的网络社区,采用如下公式计算点与点的链接强度:
其中,ri(i=1,2,3)分别表示微博中用户i,j的好友关系,用户i,j之间At的次数以及用户i,j之间评论的次数,k表示各交互信息的权重。
9.一种用于社区发现并行化的主节点设备,其特征在于,包括社区融合模块和任务合并模块,其中:
社区融合模块,根据所有运算节点初始划分的b个社区之间的链接关系,再次进行融合操作,共得到k个社区,C(k)={c1,c2,…,ck},计算C(k)划分结果的模块度,以及根据所有运算节点再次划分的b个社区之间的链接关系,再次进行融合操作,得到k个社区,计算这k个社区划分结果的模块度;
任务合并模块,将所述社区融合模块融合操作得到的k个社区合并成为大小相似的p个社区,重新设置在p个运算节点上,直到整合操作后的k个社区的模块度小于阈值则停止迭代,此时得到的分类结果为社区发现的最终结果。
10.如权利要求9所述的主节点设备,其特征在于,所述社区融合模块计算C(k)划分结果的模块度时,按照如下公式计算两个类别融合对全局模块度的贡献值:
ΔQij=eij/2m-2aiaj/(2m)2,
其中,αi,αj表示第i和第j个类别中所有点的度的和;
eij表示两个类别间链接的权重总和。
11.一种用于社区发现并行化的运算节点设备,其特征在于,包括第一模块和第二模块,其中:
所述第一模块,将子图中每个点看成独立的一个类别Ci={Vi},按照如下公式初始化两个点融合对全局模块度的贡献值,将得到的两类融合的贡献度插入到最大堆中;
ΔQij=wij/2m-2aiaj/(2m)2
其中,αi,αj表示第i和第j个点在整个社交网络中的度,wij表示两点间的链接强度;
所述第二模块,在最大堆中寻找对全局模块度贡献最大的融合模式,将对应的两个类别进行融合,并根据如下公式更新与这两个类有关的所有融合模式的模块度贡献值,利用最大堆的更新操作,保证最大堆的数据结构不变,并重复更新与这两个类有关的所有融合模式的模块度贡献值,直到最大堆中第一个元素即最大堆中的最大值为负,停止迭代过程;
当类别k和类别i,j都有连接时,模块度贡献值:ΔQ′jk=ΔQik+ΔQjk
当类别k和类别i有连接,和j无连接时,模块度贡献值:ΔQ′jk=ΔQik-2ajak
当类别k和类别j有连接,和i无连接时,模块度贡献值:ΔQ′jk=ΔQjk-2aiak。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310096323.0A CN104077280A (zh) | 2013-03-25 | 2013-03-25 | 社区发现并行化方法和系统、主节点和运算节点设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310096323.0A CN104077280A (zh) | 2013-03-25 | 2013-03-25 | 社区发现并行化方法和系统、主节点和运算节点设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104077280A true CN104077280A (zh) | 2014-10-01 |
Family
ID=51598540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310096323.0A Pending CN104077280A (zh) | 2013-03-25 | 2013-03-25 | 社区发现并行化方法和系统、主节点和运算节点设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077280A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095403A (zh) * | 2015-07-08 | 2015-11-25 | 福州大学 | 基于混合近邻消息传播的并行社区发现算法 |
CN106649441A (zh) * | 2016-09-13 | 2017-05-10 | 深圳市华傲数据技术有限公司 | 图数据的重划分方法及系统 |
CN108648094A (zh) * | 2018-05-08 | 2018-10-12 | 阿里巴巴集团控股有限公司 | 一种社区发现方法、装置以及设备 |
CN108711064A (zh) * | 2018-06-06 | 2018-10-26 | 中国农业银行股份有限公司 | 一种划分客户关系网络的方法及装置 |
CN109345252A (zh) * | 2018-08-24 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 一种线上交易控制方法、装置、及计算机设备 |
CN109408722A (zh) * | 2018-11-06 | 2019-03-01 | 腾讯科技(深圳)有限公司 | 社区划分方法、装置、计算设备及存储介质 |
CN109712011A (zh) * | 2017-10-25 | 2019-05-03 | 北京京东尚科信息技术有限公司 | 社区发现方法和装置 |
CN110110154A (zh) * | 2018-02-01 | 2019-08-09 | 腾讯科技(深圳)有限公司 | 一种图文件的处理方法、装置及存储介质 |
CN110135853A (zh) * | 2019-04-25 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 团伙用户识别方法、装置和设备 |
CN110309367A (zh) * | 2018-03-05 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 信息分类的方法、信息处理的方法和装置 |
CN112765409A (zh) * | 2020-12-31 | 2021-05-07 | 中国科学院软件研究所 | 一种基于模块度的分布式社区发现方法 |
CN113177854A (zh) * | 2021-04-23 | 2021-07-27 | 携程计算机技术(上海)有限公司 | 社区划分方法及系统、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070083933A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Detection of security vulnerabilities in computer programs |
CN101944045A (zh) * | 2010-10-18 | 2011-01-12 | 中国人民解放军国防科学技术大学 | 基于社区特性的并行离散事件仿真对象分发方法 |
-
2013
- 2013-03-25 CN CN201310096323.0A patent/CN104077280A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070083933A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Detection of security vulnerabilities in computer programs |
CN101944045A (zh) * | 2010-10-18 | 2011-01-12 | 中国人民解放军国防科学技术大学 | 基于社区特性的并行离散事件仿真对象分发方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095403A (zh) * | 2015-07-08 | 2015-11-25 | 福州大学 | 基于混合近邻消息传播的并行社区发现算法 |
CN106649441A (zh) * | 2016-09-13 | 2017-05-10 | 深圳市华傲数据技术有限公司 | 图数据的重划分方法及系统 |
CN109712011A (zh) * | 2017-10-25 | 2019-05-03 | 北京京东尚科信息技术有限公司 | 社区发现方法和装置 |
CN109712011B (zh) * | 2017-10-25 | 2022-01-07 | 北京京东尚科信息技术有限公司 | 社区发现方法和装置 |
CN110110154B (zh) * | 2018-02-01 | 2023-07-11 | 腾讯科技(深圳)有限公司 | 一种图文件的处理方法、装置及存储介质 |
CN110110154A (zh) * | 2018-02-01 | 2019-08-09 | 腾讯科技(深圳)有限公司 | 一种图文件的处理方法、装置及存储介质 |
CN110309367A (zh) * | 2018-03-05 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 信息分类的方法、信息处理的方法和装置 |
CN110309367B (zh) * | 2018-03-05 | 2022-11-08 | 腾讯科技(深圳)有限公司 | 信息分类的方法、信息处理的方法和装置 |
CN108648094A (zh) * | 2018-05-08 | 2018-10-12 | 阿里巴巴集团控股有限公司 | 一种社区发现方法、装置以及设备 |
CN108711064A (zh) * | 2018-06-06 | 2018-10-26 | 中国农业银行股份有限公司 | 一种划分客户关系网络的方法及装置 |
CN109345252A (zh) * | 2018-08-24 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 一种线上交易控制方法、装置、及计算机设备 |
CN109408722A (zh) * | 2018-11-06 | 2019-03-01 | 腾讯科技(深圳)有限公司 | 社区划分方法、装置、计算设备及存储介质 |
CN109408722B (zh) * | 2018-11-06 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 社区划分方法、装置、计算设备及存储介质 |
CN110135853A (zh) * | 2019-04-25 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 团伙用户识别方法、装置和设备 |
CN112765409A (zh) * | 2020-12-31 | 2021-05-07 | 中国科学院软件研究所 | 一种基于模块度的分布式社区发现方法 |
CN113177854A (zh) * | 2021-04-23 | 2021-07-27 | 携程计算机技术(上海)有限公司 | 社区划分方法及系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077280A (zh) | 社区发现并行化方法和系统、主节点和运算节点设备 | |
Bartunov et al. | Joint link-attribute user identity resolution in online social networks | |
CN103699606B (zh) | 一种基于顶点切割与社区聚集的大规模图划分方法 | |
CN104809244B (zh) | 一种大数据环境下的数据挖掘方法和装置 | |
Takikawa et al. | Real-time inference with large-scale temporal bayes nets | |
CN107609141A (zh) | 一种对大规模可再生能源数据进行快速概率建模方法 | |
CN110322003B (zh) | 一种用于文档分类的基于梯度的通过添加虚假节点的图对抗样本生成方法 | |
CN104077723A (zh) | 一种社交网络推荐系统及方法 | |
Elagib et al. | Big data analysis solutions using MapReduce framework | |
CN102752279B (zh) | 一种社交网络恶意代码传播的仿真系统及仿真方法 | |
CN109977131A (zh) | 一种房型匹配系统 | |
CN104267936A (zh) | 基于树语义的异步动态下推网络可达性分析方法 | |
Angel et al. | Recurrent rotor-router configurations | |
Gómez Canaval et al. | NPEPE: Massive natural computing engine for optimally solving NP-complete problems in Big Data scenarios | |
Sun et al. | Anomaly subgraph detection with feature transfer | |
CN103207804A (zh) | 基于集群作业日志的MapReduce负载模拟方法 | |
CN109376379A (zh) | 基于最小割向量的多状态流网络性能优化方法及装置 | |
Bhuiyan et al. | A parallel algorithm for generating a random graph with a prescribed degree sequence | |
Kloks et al. | Treewidth and pathwidth of cocomparability graphs of bounded dimension | |
Pasteris et al. | Data distribution and scheduling for distributed analytics tasks | |
Ayat et al. | Entity resolution for distributed probabilistic data | |
Wu et al. | Link prediction based on random forest in signed social networks | |
Senapati et al. | A method for scalable first-order rule learning on Twitter data | |
CN106777092A (zh) | 移动云计算环境下动态Skyline查询的智能医疗呼叫查询方法 | |
Hu et al. | Detecting and evolving microblog community based on structure and gravity cohesion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141001 |
|
WD01 | Invention patent application deemed withdrawn after publication |