CN109408722B - 社区划分方法、装置、计算设备及存储介质 - Google Patents
社区划分方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN109408722B CN109408722B CN201811311929.0A CN201811311929A CN109408722B CN 109408722 B CN109408722 B CN 109408722B CN 201811311929 A CN201811311929 A CN 201811311929A CN 109408722 B CN109408722 B CN 109408722B
- Authority
- CN
- China
- Prior art keywords
- subgraphs
- community
- subgraph
- undirected graph
- vertices
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/01—Social networking
Abstract
本申请公开了社区划分方法、装置、计算设备及存储介质。其中,一种社区划分方法包括:获取第一有权无向图;将第一有权无向图划分为多个第一子图;对各第一子图中顶点进行合并,并将合并后生成的多个子图作为多个第二子图;迭代执行如下操作,直到顶点总数不超过数量阈值:对多个第二子图进行分组,将各分组中的第二子图合并为一个第三子图;对各第三子图中顶点执行社区合并操作得到一个第四子图;将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将生成的多个子图作为最新的多个第二子图;合并迭代操作生成的多个第二子图,得到第二有权无向图;对第二有权无向图进行社区划分。根据本申请的技术方案可以提高社区划分效率。
Description
技术领域
本申请涉及数据挖掘技术领域,尤其涉及社区划分方法、装置、计算设备及存储介质。
背景技术
随着互联网的发展,用户可以利用各种多媒体应用(例如,即时通讯应用、社交应用、短视频应用等等)发布和浏览多媒体内容。这里,发布多媒体内容的主体标识(例如为网络标识、终端设备标识、个人登录账号、公众号等等)急剧增长。
与多媒体内容有关的主体标识可以形成一个网络结构。各个主体标识可以认为是网络结构中顶点。为了挖掘网络结构中顶点之间的关联关系,现有方案可以采用各种社区发现算法对网络中顶点进行社区划分。然而,现有的方案在面对海量的顶点数据时,处理效率有待提高。
发明内容
本申请提出了一种社区划分方案,能够提高社区划分速度。
根据本申请一方面,提供一种社区划分方法,包括:获取第一有权无向图,其中,所述第一有权无向图用于描述由边连接顶点而形成的网络结构,所述第一有权无向图中每条边的权重值用于描述每条边连接的两个顶点之间的相似度,所述第一有权无向图中不同顶点属于不同的社区;将所述第一有权无向图划分为多个第一子图,其中,每个第一子图用于描述所述网络结构的局部结构;对各第一子图中顶点进行合并,并将合并后生成的多个子图作为所述第一有权无向图的多个第二子图;迭代执行如下操作,直到所述第一有权无向图的多个第二子图的顶点总数不超过数量阈值:对执行本次迭代操作之前得到的最新的多个第二子图进行分组,将各分组中的多个第二子图合并为与各分组对应的一个第三子图;和对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图;将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为所述第一有权无向图最新的多个第二子图;合并所述迭代操作生成的多个第二子图,得到第二有权无向图;以及
对所述第二有权无向图进行社区划分。
根据本申请一方面,提供一种社区划分装置,包括:子图生成单元,生成所述第一有权无向图的多个第一子图,其中,每个第一子图用于描述所述网络结构的局部结构;顶点合并单元,对各第一子图中顶点进行合并,并将合并后生成的多个子图作为所述第一有权无向图的多个第二子图;第一子图合并单元,迭代执行如下操作,直到所述第一有权无向图的多个第二子图的顶点总数不超过数量阈值:对执行本次迭代操作之前得到的最新的多个第二子图进行分组,并将各分组中的多个第二子图合并为一个第三子图;和对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图;将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为所述有权无向图最新的多个第二子图;第二子图合并单元,合并所述迭代操作生成的多个第二子图,得到第二有权无向图;以及社区划分单元,对所述第二有权无向图进行社区划分。
根据本申请一方面,提供一种计算设备,包括:处理器;存储器;以及一个或多个程序,存储在该存储器中并被配置为由所述处理器执行,所述一个或多个程序包括用于执行根据本申请的方法的指令。
根据本申请一方面,提供一种存储介质,存储有一个或多个程序,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据本申请的方法。
综上,根据本申请的技术方案可以通过将第一有权无向图划分为多个子图,并且迭代执行合并子图中顶点和合并子图的方式,快速降低顶点总量。在快速降低顶点总量的基础上,本申请的社区划分方案可以并行对第二有权无向图进行社区划分,从而极大提高了社区划分的效率。另外说明的是,本申请的社区划分方案通过快速降低顶点总量,可以避免在并行执行社区划分操作(即并行执行社区发现算法)时顶点总量过大造成的高内存和高CPU消耗,从而可以极大提高本申请实施例的社区划分效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A示出了根据本申请一些实施例的应用场景的示意图;
图1B示出了根据本申请一些实施例的应用场景的示意图;
图2示出了根据本申请一些实施例的社区划分方法200的流程图;
图3示出了根据本申请一些实施例的生成第二子图的方法300的流程图;
图4示出了根据本申请一些实施例的生成第二子图的方法400的流程图;
图5示出了根据本申请一些实施例的确定能增加子图的模块度的邻接顶点的方法500的流程图;
图6A示出了根据本申请一些实施例的第一子图的示意图;
图6B示出了根据本申请一些实施例的第二子图的示意图;
图7示出了根据本申请一些实施例的更新第二子图的流程图;
图8示出了根据本申请一些实施例的合并子图的方法800的流程图;
图9A示出了根据本申请一些实施例的第一有权无向图的部分网络结构的示意图;
图9B示出了根据本申请一些实施例的第一有权无向图的多个第一子图的示意图;
图9C示出了根据本申请一些实施例的第一有权无向图的多个第二子图的示意图;
图9D示出了合并图9C中第二子图而得到的第三子图;
图10示出了根据本申请一些实施例的增加模块度的方法1000的流程图;
图11示出了根据本申请一些实施例的社区合并的方法1100的流程图;
图12示出了根据本申请一些实施例的执行社区划分方法时数据的变化过程;
图13示出了根据本申请一些实施例的社区划分装置1300的示意图;以及
图14示出了根据本申请一些实施例的一个计算设备的组成结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在一些应用场景中,用于社区发现的实施例通常采用串行的社区发现算法。例如,为了研究公众号的团体性质(即研究公众号之间的关联关系),用于社区发现的实施例可以基于图计算的方式,对公众号形成的网络进行社区划分。由于公众号数量急剧增加,用于社区发现的实施例的处理速度有待提高。
图1A示出了根据本申请一些实施例的应用场景100a的示意图。
如图1A所示,网络生成系统102可以通过一个或多个网络106与社区划分系统104通信。这里,网络生成系统102和社区划分系统104均可以包括一个或多个计算设备(图1A未示出)。这里,一个计算设备例如可以是一个服务器节点或者虚拟服务器,还可以是台式电脑、膝上计算机、移动电话、平板电脑等各种终端设备,本申请对此不做限制。
一个或多个网络106的示例包括局域网(LAN)和广域网(WAN)诸如互联网。本申请的实施例可以使用任意公知的网络协议来实现一个或多个网络106,包括各种有线或无线协议,诸如,以太网、通用串行总线(USB)、FIREWIRE、全球移动通讯系统(GSM)、增强数据GSM环境(EDGE)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、WiFi、IP语音(VOIP),Wi-MAX,或任意其他适合的通信协议。
在一些实施例中,网络生成系统102可以生成由边连接顶点而得到的网络结构。这里,网络结构例如为一个有权无向图。有权无向图中每条边的权重值可以描述这条边连接的两个顶点之间的相似度。例如,网络生成系统102可以生成关于公众号的有权无向图。在进行社区划分之前,有权无向图中每个顶点可以表示一个公众号。有权无向图中的各条边表示公众号之间的相似度。在一些实施例中,公众号的相似度可以通过公众号所发布的内容(例如,文章、图片、小程序(Mini Program)、短视频等等)来衡量。例如,两个公众号各自发布内容的相似度可以用于确定两个公众号的相似度。这里,本申请的实施例可以采用各种相似度计算方式确定两个顶点之间相似度,本申请对此不做限制。
社区划分系统104可以从网络生成系统102获取网络结构,例如获取关于公众号的有权无向图。社区划分系统104执行根据本申请的社区划分方案,以对网络结构进行社区划分。
图1B示出了根据本申请一些实施例的应用场景100b的示意图。如图1B所示,社区划分系统104可以包括多个计算设备,例如计算设备1081、1082、1083和1084等等,这里,社区划分系统104也可以称为用户社区划分的计算集群。这样,社区划分系统104可以进行并行计算。下面结合图2对社区划分系统104执行的社区划分方案进行说明。
图2示出了根据本申请一些实施例的社区划分方法200的流程图。社区划分方法200例如可以由社区划分系统104执行。
在步骤S201中,获取第一有权无向图。其中,第一有权无向图用于描述由边连接顶点而形成的网络结构。第一有权无向图中每条边的权重值用于描述每条边连接的两个顶点之间的相似度。这里,第一有权无向图中顶点可以包括顶点标识。另外,第一有权无向图中顶点可以按照社区进行划分。通常,第一有权无向图初始化为不同顶点属于不同的社区。换言之,每个社区包括一个顶点。一个顶点所属的社区例如可以通过社区标识进行区别。这里,由于每个社区只包括一个顶点,每个社区的社区标识可以与该社区中顶点的顶点标识一致。在一些实施例中,步骤S201例如可以从网络生成系统102获取第一有权无向图。在一些实施例中,步骤S201可以在社区划分系统104中根据待划分社区的内容生成第一有权无向图。这里,待划分的内容例如为大量的公众号。
在步骤S202中,将第一有权无向图划分为多个第一子图。其中,每个第一子图用于描述第一有权无向图的网络结构的局部结构。这里,步骤S202通过将第一有权无向图分成多个第一子图,可以并行对多个第一子图进行操作,从而提高数据处理效率。
在一些实施例中,步骤S202可以基于哈希计算方式,将第一有权无向图中顶点分配到多个第一子图。
在一些实施例中,步骤S202可以通过步骤S2021和S2022来生成多个第一子图。在步骤S2021中,计算第一有权无向图中各顶点的标识除以分区阈值的余数。这里,各顶点的标识可以为数值信息,例如为各顶点的数字编号,分区阈值就是所要生成第一子图的总数。在步骤S2022中,将第一有权无向图中同余数的顶点划分到同一个第一子图中。换言之,在第一有权无向图中,标识除以分区阈值的余数相同的顶点会被划分到同一个第一子图中。另外说明的是,步骤S202还可以采用其他哈希计算方式对第一有权无向图中顶点进行分组,以生成多个第一子图。分区阈值例如为part_num。在一些实施例中,part_num例如可以根据第一有权无向图中顶点总量进行设置。例如,顶点总量越大,part_num值越大。在一些实施例中,多个第一子图会进行并行处理,因此,part_num可以根据社区划分系统104中计算资源的规模进行划分,本申请对此不做限制。综上,步骤S202可以通过哈希计算方式,将第一有权无向图中顶点较平均地分配到各个第一子图中。这样,各个第一子图的计算复杂度可以下降为划分之前的第一有权无向图的1/part_num。
在步骤S203中,对各第一子图中顶点进行合并,并将合并后生成的多个子图作为第一有权无向图的多个第二子图。这里,步骤S203可以按照能够提高各第一子图的模块度的各种方式来对顶点进行合并。
在一些实施例中,步骤S203可以实施为方法300。如图3所示,在步骤S301中,将多个第一子图分配到社区划分系统104的多个计算设备中。在步骤S302中,在各计算设备中,基于快速展开(Fast Unfolding)方式,对各计算设备分配到的第一子图中顶点进行合并。在步骤S303中,将合并后生成的多个子图作为第一有权无向图的多个第二子图。综上,方法300可以避免基于第一有权无向图整个图的模块度进行顶点合并,而是可以基于分布式计算方式对各第一子图进行顶点合并,从而可以极大提高顶点合并的效率。
在一些实施例中,步骤S203可以实施为方法400。如图4所示,在步骤S401中,对于多个第一子图中任一个第一子图,对该第一子图中顶点执行社区合并操作,最大化该第一子图的模块度。这里,第一子图的模块度,是指将第一子图作为一个完整的网络结构,而得到的该网络结构的模块度。对于两个顶点而言,社区合并操作是指将这两个顶点的社区合并为一个社区。换言之,将一个顶点加入到另一个顶点的社区。在一些实施例中,步骤S401可以并行对多个第一子图进行社区合并操作,从而提高社区合并的效率。在一些实施例中,社区划分系统104可以包括火星(即Spark)应用。步骤S401例如可以基于Spark的图计算框架(例如,GraphX)进行社区合并操作。在一些实施例中,步骤S401可以由社区划分系统104中多个计算设备执行。例如,每个计算设备可以执行一个或多个第一子图的社区合并操作。
在一些实施例中,步骤S401可以通过步骤S4011和S4012,对任一个第一子图中社区进行合并操作。
在步骤S4011中,对于该第一子图中任一个允许访问的顶点,确定加入该顶点的社区能增加该第一子图的模块度的允许访问的邻接顶点。
在一些实施例中,步骤S4011可以实施为方法500。如图5所示,在步骤S501中,对于顶点的任一允许访问的邻接顶点,计算将该邻接顶点加入到顶点的社区之后第一子图的模块度与加入到顶点的社区之前的第一子图的模块度的差值。在步骤S502中,在差值为正时,确定该邻接顶点在加入到顶点的社区时能增加第一子图的模块度。
在一些实施例中,步骤S4011可以基于快速展开(Fast Unfolding)算法计算模块度。例如,步骤S4011可以基于如下公式进行模块度计算。
其中,Q表示模块度。m表示网络结构中所有边的权重和。步骤S4011中每个第一子图是一个独立的网络结构。Ai,j表示顶点i和j之间的权重值,ki表示网络结构中与顶点i连接的边的权重和。kj表示网络结构中与顶点j连接的边的权重和。ci表示顶点i所属社区的标识,cj表示顶点j所属社区的标识,δ(ci,cj)取两个值。若i=j,则δ(ci,cj)=1。否则,δ(ci,cj)=0。
在步骤S4012中,将确定的邻接顶点加入到该顶点的社区,并将确定的邻接顶点设置为不允许访问。例如,在一个第一子图A中,顶点a属于社区N。顶点a的能够访问的邻接顶点包括b、c和d。在步骤S4011确定邻接顶点c加入到顶点a的社区能够增加第一子图A的模块度时,步骤S4012可以将顶点c加入顶点a所属的社区N。类似地,在步骤S4011确定邻接顶点d加入到顶点a的社区能够增加第一子图A的模块度时,步骤S4012可以将顶点d加入顶点a所属的社区N。
在步骤S402中,对于完成社区合并操作的多个第一子图,将各第一子图中任意社区内的所有顶点合并为一个新的顶点,将合并顶点后生成的多个子图作为多个第二子图。在一些实施例中,步骤S402可以包括步骤S4021-S4023。在步骤S4021中,对各第一子图中任意两个社区,计算这两个社区之间连接的边的权重和。在步骤S4022中,对于这两个社区,在各社区内将所有顶点合并成一个新的顶点。这里,新的顶点的标识可以与社区的标识一致。例如,附图6A示出根据本申请一些实施例的第一子图的示意图。如图6A所示,第一子图601可以包括社区c1和c2。社区c1可以包括顶点v1、v2和v3。社区c2可以包括顶点v4、v5、v6和v7。边e1-e10用于连接顶点。步骤S4021可以计算社区c1和c2之间连接的边的权重和。具体地,步骤S4021可以计算边e1、e2、e3和e4的权重和s。在步骤S4022中,将社区c1中所有顶点合并为一个新的顶点v8。即,将顶点v1、v2和v3合并为顶点v8。顶点v8的标识可以与社区c1一致。另外,步骤S4022还可以将社区c2中所有顶点合并为一个新的顶点v9。即,将顶点v4、v5、v6和v7合并为顶点v9。顶点v9的标识可以与社区c2的标识一致。
在步骤S4023中,将该权重和设置为这两个社区对应的两个新的顶点之间的边的权重。例如,附图6B示出了由第一子图601生成的第二子图602。顶点v8和v9之间的边e11的权重为权重和s。另外说明的是,方法300主要说明步骤S203的操作可以是并行执行的。步骤S203可以基于方法300的并行方式来执行方法400。
综上,通过步骤S202-S203的组合,本申请的实施例可以避免在合并社区操作和合并社区内顶点时需要考虑有权无向图中所有顶点和边,而是可以将有权无向图划分为子图,并基于各子图并行进行社区合并操作和合并社区内顶点,从而可以极大增加顶点总量的下降速度。换言之,步骤S202-S203的组合可以极大增加对有权无向图的社区划分效率。
在步骤S204中,迭代执行如下方法700,直到第一有权无向图的多个第二子图的顶点总数不超过数量阈值。
如图7所示,在步骤S701中,对执行本次迭代操作之前得到的最新的多个第二子图进行分组,并将各分组中多个第二子图合并为一个第三子图。即,步骤S701可以得到第一有权无向图的多个第三子图。
在一些实施例中,步骤S701可以包括S7011和S7012。在步骤S7011中,计算多个第二子图中各顶点的标识除以本次分组的阈值的余数,其中,本次分组的阈值能整除上一次分组的阈值。这里,上一次分组的阈值是指上一次执行方法700时用于对多个第二子图进行分组的阈值。
在步骤S7012中,将多个第二子图中余数相同的第二子图划分为同一个分组,并将每个分组中多个第二子图合并为一个第三子图。需要说明的是,由于本次分组的阈值能整除上一次分组的阈值,在同一个第二子图中各顶点的标识除以本次分组的阈值时,各顶点对应的余数相同。因此,一个第二子图对应的余数可以用该第二子图中任意顶点对应的余数来表示。余数相同的第二子图是指顶点的余数均相同的多个第二子图。在一些实施例中,步骤S7012可以通过方法800的步骤将各分组中多个第二子图合并为一个第三子图。
如图8所示,在步骤S801中,根据第一有权无向图中的各条边,确定各分组中不同第二子图的顶点之间的相似度。例如图9A示出了一个第一有权无向图901的部分网络结构的示意图。如图9A所示,第一有权无向图901包括顶点v1-v12。边e1-e19用于连接顶点v1-v12。图9B示出了第一有权无向图901的多个第一子图,即902和903。其中,第一子图902包括社区c1和社区c2。第一子图903包括社区c3和社区c4。图9C示出了由图9B中第一子图902生成的第二子图904,还示出了由图9B中第一子图903生成的第二子图905。社区c1中顶点v13由来自第一有权无向图901的顶点v1-v3合并而成。社区c2中顶点v14由来自第一有权无向图901的顶点v4-v7合并而成。社区c3中顶点v15由来自第一有权无向图901的顶点v8-v9合并而成。社区c4中顶点v16由来自第一有权无向图901的顶点v10-v12合并而成。对于顶点v13和v15而言,二者的相似度可以根据第一有权无向图901中顶点v1-v3和v8-v9来确定。例如,二者的相似度s1为边e16和e17的权重和。类似地,顶点v14和v15的相似度s2为边18的权重,顶点v14和v16的相似度s3为边e19的权重。由于顶点v1-v3中各顶点均不与顶点v10-v12连接,v13和v16的相似度s4为零。
在步骤S802中,根据各分组中不同第二子图的顶点之间的相似度,连接各分组中不同第二子图之间的顶点,而将各分组中的所有第二子图合并为一个第三子图。例如,图9D示出了合并图9C中第二子图904和905而得到的第三子图906。如图9D所示,顶点v13和v15之间连接由边e22,权重为s1。顶点v14和v15之间连接有边e23,权重为s2。顶点v14和v16之间连接有边e24,权重为s3。
另外说明的是,步骤S204第一次执行方法700时,第一次分组的阈值能够整除步骤S2022中分区阈值。例如,分区阈值为1000。用于各次分组的阈值依次为500、250、50…。这里,步骤S701通过将各次分组的阈值设置为本次分组的阈值能整除用于上一次分组的阈值,可以避免子图合并时将多个子图中顶点拆散而造成的算法不收敛,从而可以稳定地合并子图。
在步骤S702中,对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图。
在步骤S703中,将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为第一有权无向图最新的多个第二子图。这里,步骤S703得到的多个第二子图就是下次执行迭代操作(即方法700)之前的最新的多个第二子图。社区合并操作的实施方式与上文中S4011-S4012类似,这里不再赘述。合并生成新的顶点的方式与上文中S402一致,这里不再赘述。
综上,步骤S204通过迭代执行方法700,可以快速对各子图进行社区合并和顶点合并。对于步骤S201中第一有权无向图而言,步骤S204可以快速合并社区和降低顶点总量的规模,从而提高社区划分的效率。
在步骤S205中,合并迭代操作(即迭代执行方法700的操作,直到第一有权无向图的多个第二子图的顶点总数不超过数量阈值)生成的多个第二子图,得到一个第二有权无向图。这里,多个子图合并的方式与上文中方法800一致,这里不再赘述。综上,方法200通过步骤S202-S205的组合,可以快速降低第一有权无向图中顶点数量,从而可以继续对第二有权无向图快速进行社区划分,进而提高对有权无向图的社区划分效率。
在步骤S206中,对第二有权无向图进行社区划分。在一些实施例中,步骤S206可以迭代执行方法1000,直到最新的第二有权无向图的模块度变化低于模块度阈值。换言之,步骤S206可以迭代执行方法1000,直到最新的第二有权无向图的模块度趋于稳定。这里,模块度阈值可以根据需要进行设定。步骤S206可以通过迭代方式,使得最新的第二有权无向图相比于上一次生成的第二有权无向图的模块度没有明显增加。在一些实施例中,步骤S206可以基于GraphX的普雷格尔(Pregel)框架执行方法1000。
如图10所示,在步骤S1001中,并行对执行本次迭代操作之前得到的最新的第二有权无向图中顶点进行社区合并操作,得到第三有权无向图。
在一些实施例中,步骤S1001可以实施为方法1100。如图11所示,在步骤S1101中,将第二有权无向图中顶点分配到多个计算设备(例如计算设备1081、1082、1083和1084等等)中,并在每个计算设备中存储所分配的顶点和与所分配的顶点连接的边。这里,边的信息包括权重值和其连接的两个顶点的标识。例如,Eij={i,j,Aij},Eij表示顶点i和j之间的一条无向边,权重值为Aij。在一些实施例中,社区划分系统104还可以包括管理设备(图1B未示出)。管理设备例如可以是一个服务器节点或者虚拟服务器。步骤S1101中分配顶点的操作可以由管理设备执行。在步骤S206每次迭代执行S1101时,管理设备可以将相对于前一次迭代的分配变化信息通知到相应计算设备,而不需要将所有顶点进行重新分配,以提高步骤S1101的执行效率。
在步骤S1102中,在每个计算设备中,基于快速展开(Fast Unfolding)方式,对本地顶点进行社区合并操作,以增加第二有权无向图的模块度。
在步骤S1103中,确定在不同计算设备中属于不同社区的顶点。各计算设备可以将步骤S1101的各计算设备执行社区合并操作的结果汇总到管理设备中。这样,管理设备可以确定在不同计算设备中属于不同社区的顶点。
在步骤S1104中,对于在不同计算设备中属于不同社区的任一顶点,将包含该顶点的所有社区进行合并。例如,顶点i在计算设备1081中属于社区c1。社区c1可以包括顶点i、j和k。在计算设备1082中,顶点i属于社区c2。社区c2可以包括顶点i、l、m和n。步骤S1102可以将社区c1和社区c2进行合并。在一些实施例中,步骤S206迭代执行步骤S1001时,可以通过在各计算设备之间进行数据交换来更新有权无向图。
在步骤S1002中,将第三有权无向图中各社区的顶点合并为一个新的顶点,得到最新的第二有权无向图。综上,通过方法1000,本申请的实施例可以并行执行社区划分操作,可以避免串行方式执行社区划分(即串行执行社区发现算法)需要的按照预定顺序遍历顶点,从而可以提高社区划分的效率和提高算法的稳定性。
综上,社区划分方法200可以通过将第一有权无向图划分为多个子图,并且迭代执行合并子图中顶点和合并子图的方式,快速降低顶点总量。在快速降低顶点总量的基础上,社区划分方法200可以并行对第二有权无向图进行社区划分,从而极大提高了社区划分的效率。另外说明的是,社区划分方法200通过步骤S202-S205快速降低顶点总量,可以避免在执行步骤S206并行执行社区划分操作(即并行执行社区发现算法)时顶点总量过大造成的高内存和高CPU消耗,从而可以极大提高本申请实施例的社区划分效率。在一些实施例中,社区划分系统104可以包括800个CPU以及3TB内存。针对百亿级顶点总量的有权无向图,未使用方法200的社区划分方式需要12个小时。方法200可以将社区划分的完成时间从12小时缩减至3小时。
为了更形象说明,社区划分方法200的过程,下面结合图12进行说明。图12示出了执行社区划分方法200时数据的变化过程。
如图12所示,步骤S202可以将第一有权无向图1201(即,待进行社区划分的原始数据)划分为第一子图1202、1203、1204和1205。步骤S202可以分别对第一子图1202、1203、1204和1205执行社区合并操作。对于完成社区合并的第一子图1202、1203、1204和1205,步骤S203可以在各第一子图中任意社区内将所有顶点合并为一个新的顶点,得到第一有权无向图的多个第二子图,即第二子图1206、1207、1208和1209。步骤S204可以将第二子图1206、1207、1208和1209进行分组,将各分组合并为与各分组对应的一个第三子图。例如,第二子图1206和1207可以合并为第三子图1210,第二子图1208和1209可以合并为第三子图1211。对于第一有权无向图1201的第三子图1210和1211,步骤S204可以对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图。例如,步骤S204可以生成第三子图1210对应的第四子图1212,和生成第三子图1211对应的第四子图1213。步骤S204可以将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为第一有权无向图最新的多个第二子图。例如,步骤S204可以生成与第四子图1212对应的最新的第二子图1214,和生成与第四子图1213对应的最新的第二子图1215。在此基础上,步骤S204可以确定最新的第二子图1214和1215的顶点总数是否超过数量阈值。如果未超过数量阈值,步骤S205可以合并最新的第二子图1214和1215,得到第二有权无向图1216,即生成包含当前所有顶点的完整网络结构。对于第二有权无向图1216,步骤S206可以对其执行社区划分操作。
图13示出了根据本申请一些实施例的社区划分装置1300的示意图。社区划分系统104可以包括社区划分装置1300。如图13所示,社区划分装置1300可以包括获取单元1301、子图生成单元1302、顶点合并单元1303、第一子图合并单元1304、第二子图合并单元1305和社区划分单元1306。
获取单元1301,用于获取第一有权无向图。其中,第一有权无向图用于描述由边连接顶点而形成的网络结构。第一有权无向图中每条边的权重值用于描述每条边连接的两个顶点之间的相似度。第一有权无向图中不同顶点属于不同的社区。
子图生成单元1302,将第一有权无向图划分为多个第一子图。其中,每个第一子图用于描述第一有权无向图的网络结构的局部结构。在一些实施例中,子图生成单元1302可以基于哈希计算方式,将第一有权无向图中顶点分配到多个第一子图。在一些实施例中,子图生成单元1302可以计算第一有权无向图中各顶点的标识除以分区阈值的余数。在此基础上,子图生成单元1302将第一有权无向图中同余数的顶点划分到同一个第一子图中。
顶点合并单元1303,对各第一子图中顶点进行合并,并将合并后生成的多个子图作为所述第一有权无向图的多个第二子图。
在一些实施例中,顶点合并单元1303将多个第一子图分配到多个计算设备中。顶点合并单元1303在各计算设备中,基于快速展开方式,对各计算设备分配到的第一子图中顶点进行合并。顶点合并单元1303可以将合并后生成的多个子图作为第一有权无向图的多个第二子图。
在一些实施例中,对于多个第一子图中任一个第一子图,顶点合并单元1303可以对该第一子图中顶点执行社区合并操作,最大化该子图的模块度。对于完成社区合并操作的多个第一子图,顶点合并单元1303可以在各第一子图中任意社区内将所有顶点合并为一个新的顶点,将合并顶点后生成的多个子图作为多个第二子图。
在一些实施例中,对于一个第一子图中任一个允许访问的顶点,顶点合并单元1303可以确定加入该顶点的社区能增加该子图的模块度的允许访问的邻接顶点。顶点合并单元1303可以将确定的邻接顶点加入到该顶点的社区,并将确定的邻接顶点设置为不允许访问。
在一些实施例中,对于一个顶点v的任一允许访问的邻接顶点,顶点合并单元1303可以计算在将该邻接顶点加入到顶点v的社区之后,第一子图的模块度与加入到顶点v的社区之前的第一子图的模块度的差值。在差值为正时,顶点合并单元1303确定该邻接顶点在加入到顶点v的社区时能增加第一子图的模块度。
在一些实施例中,对各第一子图中任意两个社区,顶点合并单元1303可以计算所述任意两个社区之间连接的边的权重和。对于所述任意两个社区,顶点合并单元1303可以将各社区内的所有顶点合并成一个新的顶点。另外,顶点合并单元1303可以将该权重和设置为这两个社区对应的两个新的顶点之间的边的权重。
第一子图合并单元1304,迭代执行如下操作,直到第一有权无向图的多个第二子图的顶点总数不超过数量阈值:
对执行本次迭代操作之前得到的最新的多个第二子图进行分组,将各分组中的多个第二子图合并为与各分组对应的一个第三子图;
对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图;和
将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为所述第一有权无向图最新的多个第二子图。
在一些实施例中,第一子图合并单元1304计算多个第二子图中各顶点的标识除以本次分组的阈值的余数。其中,本次分组的阈值能整除上一次分组的阈值。第一子图合并单元1304将多个第二子图中余数相同的第二子图划分为同一个分组,并将各分组中第二子图合并为一个第三子图。在一些实施例中,第一子图合并单元1304可以根据第一有权无向图中的各条边,确定各分组中不同第二子图的顶点之间的相似度。根据各分组中不同第二子图的顶点之间的相似度,第一子图合并单元1304可以连接各分组中不同第二子图之间的顶点,而将各分组中的所有第二子图合并为一个第三子图。
第二子图合并单元1305,合并所述迭代操作生成的多个第二子图,得到第二有权无向图。
社区划分单元1306,对第二有权无向图进行社区划分。在一些实施例中,社区划分单元1306迭代执行如下操作,直到第二有权无向图的模块度变化低于模块度阈值:并行对行对执行本次迭代操作之前得到的最新的第二有权无向图中顶点进行社区合并操作,得到第三有权无向图;在第三有权无向图的各社区中将所有顶点合并为一个新的顶点,得到最新的第二有权无向图。
在一些实施例中,社区划分单元1306可以根据下述方式并行对当前的第二有权无向图中顶点进行社区合并操作,得到第三有权无向图:将第二有权无向图中顶点分配到多个计算设备中,并在每个计算设备中存储所分配的顶点和与所分配的顶点连接的边;在每个计算设备中,基于快速展开方式,对本地顶点进行社区合并操作;确定在不同计算设备中属于不同社区的顶点;以及对于在不同计算设备中属于不同社区的任一顶点,将包含该顶点的所有社区进行合并。
综上,社区划分装置1300可以通过将第一有权无向图划分为多个子图,并且迭代执行合并子图中顶点和合并子图的方式,快速降低顶点总量。在快速降低顶点总量的基础上,社区划分装置1300可以并行对第二有权无向图进行社区划分,从而极大提高了社区划分的效率。
图14示出了一个计算设备的组成结构图。这里,计算设备可以是社区划分系统104中任一个设备节点。如图14所示,该计算设备包括一个或者多个处理器(CPU)1402、通信模块1404、存储器1406、用户接口1410,以及用于互联这些组件的通信总线1408。
处理器1402可通过通信模块1404接收和发送数据以实现网络通信和/或本地通信。
用户接口1410包括一个或多个输出设备1412,其包括一个或多个扬声器和/或一个或多个可视化显示器。用户接口1410也包括一个或多个输入设备1414。用户接口1410例如可以接收遥控器的指令,但不限于此。
存储器1406可以是高速随机存取存储器,诸如DRAM、SRAM、DDR RAM、或其他随机存取固态存储设备;或者非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备,或其他非易失性固态存储设备。存储器1406存储处理器1402可执行的指令集,包括:操作系统1116和应用1118。
操作系统1116包括用于处理各种基本系统服务和用于执行硬件相关任务的程序。应用1118包括用于实现上述方法200至500、600至800、1000和1100的各种程序。在一些实施例中,应用1118可以包括图13所示社区划分装置1300。
另外,本申请的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本申请。
此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本申请。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此本申请还公开了一种非易失性存储介质,其中存储有数据处理程序,该数据处理程序用于执行本申请上述社区划分方法的任意一种实施例。
另外,本申请所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌微控制器等来实现。因此这种可以实现本申请所述方法的硬件也可以构成本申请。
以上所述仅为本申请的示例性实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (11)
1.一种社区划分方法,其特征在于,所述方法包括:
获取第一有权无向图,其中,所述第一有权无向图用于描述由边连接顶点而形成的网络结构,所述第一有权无向图中每条边的权重值用于描述每条边连接的两个顶点之间的相似度,所述第一有权无向图中不同顶点属于不同的社区;
计算所述第一有权无向图中各顶点的标识除以分区阈值的余数;将所述第一有权无向图中同余数的顶点划分到同一个第一子图中,其中,每个第一子图用于描述所述网络结构的局部结构;
对于多个第一子图中任一个第一子图,对该第一子图中顶点执行社区合并操作,最大化该第一子图的模块度;
对于完成所述社区合并操作的所述多个第一子图,将各第一子图中任意社区内的所有顶点合并为一个新的顶点,将合并顶点后生成的多个子图作为多个第二子图;
迭代执行如下操作,直到所述第一有权无向图的多个第二子图的顶点总数不超过数量阈值:
对执行本次迭代操作之前得到的最新的多个第二子图进行分组,将各分组中的多个第二子图合并为与各分组对应的一个第三子图;和
对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图;
将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为所述第一有权无向图最新的多个第二子图;
合并所述迭代操作生成的多个第二子图,得到第二有权无向图;以及
对所述第二有权无向图进行社区划分。
2.如权利要求1所述的方法,其中,所述对于多个第一子图中任一个第一子图,对该第一子图中顶点执行社区合并操作,最大化该第一子图的模块度,包括:
对于该第一子图中任一个允许访问的顶点,确定加入该顶点的社区能增加该第一子图的模块度的允许访问的邻接顶点;
将确定的所述邻接顶点加入到该顶点的社区,并将确定的所述邻接顶点设置为不允许访问。
3.如权利要求2所述的方法,其中,所述对于该第一子图中任一个允许访问的顶点,确定加入该顶点的社区能增加该第一子图的模块度的允许访问的邻接顶点,包括:
对于所述顶点的任一允许访问的邻接顶点,计算在将该邻接顶点加入到所述顶点的社区之后,所述第一子图的模块度与加入到所述顶点的社区之前的所述第一子图的模块度的差值;
在所述差值为正时,确定该邻接顶点在加入到所述顶点的社区时能增加所述第一子图的模块度。
4.如权利要求1所述的方法,其中,所述对于完成所述社区合并操作的所述多个第一子图,将各第一子图中任意社区内的所有顶点合并为一个新的顶点,将合并顶点后生成的多个子图作为多个第二子图,包括:
对各第一子图中任意两个社区,计算所述任意两个社区之间连接的边的权重和;
对于所述任意两个社区,在各社区内将所有顶点合并成一个新的顶点;
将该权重和设置为所述任意两个社区对应的两个新的顶点之间的边的权重。
5.如权利要求1所述的方法,其中,所述对执行本次迭代操作之前得到的最新的多个第二子图进行分组,将各分组中的多个第二子图合并为一个第三子图,包括:
计算多个第二子图中各顶点的标识除以本次分组的阈值的余数,其中,所述本次分组的阈值能整除上一次分组的阈值;
将所述多个第二子图中余数相同的第二子图划分为同一个分组,并将各分组中的所有第二子图合并为一个第三子图。
6.如权利要求5所述的方法,其中,所述将各分组中的所有第二子图合并为一个第三子图,包括:
根据所述第一有权无向图中各条边,确定各分组中不同第二子图的顶点之间的相似度;
根据各分组中不同第二子图的顶点之间的相似度,连接各分组中不同第二子图之间的顶点,而将各分组中各第二子图合并为一个第三子图。
7.如权利要求1所述的方法,其中,所述对所述第二有权无向图进行社区划分,包括:
迭代执行如下操作,直到第二有权无向图的模块度变化低于模块度阈值:
并行对执行本次迭代操作之前得到的最新的第二有权无向图中顶点进行社区合并操作,得到第三有权无向图;
在第三有权无向图的各社区中将所有顶点合并为一个新的顶点,得到最新的第二有权无向图。
8.如权利要求7所述的方法,其中,所述并行对执行本次迭代操作之前得到的最新的第二有权无向图中顶点进行社区合并操作,得到第三有权无向图,包括:
将第二有权无向图中顶点分配到多个计算设备中,并在每个计算设备中存储所分配的顶点和与所分配的顶点连接的边;
在每个计算设备中,基于快速展开方式,对本地顶点进行社区合并操作;
确定在不同计算设备中属于不同社区的顶点;以及
对于在不同计算设备中属于不同社区的任一顶点,将包含该顶点的所有社区进行合并。
9.一种社区划分装置,其特征在于,所述装置包括:
获取单元,获取第一有权无向图,其中,所述第一有权无向图用于描述由边连接顶点而形成的网络结构,所述第一有权无向图中每条边的权重值用于描述每条边连接的两个顶点之间的相似度,所述第一有权无向图中不同顶点属于不同的社区;
子图生成单元,计算所述第一有权无向图中各顶点的标识除以分区阈值的余数;将所述第一有权无向图中同余数的顶点划分到同一个第一子图中,其中,每个第一子图用于描述所述网络结构的局部结构;
顶点合并单元,对于多个第一子图中任一个第一子图,对该第一子图中顶点执行社区合并操作,最大化该第一子图的模块度;对于完成所述社区合并操作的所述多个第一子图,将各第一子图中任意社区内的所有顶点合并为一个新的顶点,将合并顶点后生成的多个子图作为多个第二子图;
第一子图合并单元,迭代执行如下操作,直到所述第一有权无向图的多个第二子图的顶点总数不超过数量阈值:
对执行本次迭代操作之前得到的最新的多个第二子图进行分组,并将各分组中的多个第二子图合并为一个第三子图;
对各第三子图中顶点执行社区合并操作得到与各第三子图对应的一个第四子图;和
将各第四子图中任意社区内的所有顶点合并为一个新的顶点,将顶点合并后生成的多个子图作为所述第一有权无向图最新的多个第二子图;
第二子图合并单元,合并所述迭代操作生成的多个第二子图,得到第二有权无向图;以及
社区划分单元,对所述第二有权无向图进行社区划分。
10.一种计算设备,其特征在于包括:
处理器;
存储器;以及
一个或多个程序,存储在该存储器中并被配置为由所述处理器执行,所述一个或多个程序包括用于执行权利要求1-8中任一项所述的方法的指令。
11.一种存储介质,存储有一个或多个程序,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811311929.0A CN109408722B (zh) | 2018-11-06 | 2018-11-06 | 社区划分方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811311929.0A CN109408722B (zh) | 2018-11-06 | 2018-11-06 | 社区划分方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408722A CN109408722A (zh) | 2019-03-01 |
CN109408722B true CN109408722B (zh) | 2021-04-30 |
Family
ID=65471768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811311929.0A Active CN109408722B (zh) | 2018-11-06 | 2018-11-06 | 社区划分方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408722B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814944A (zh) * | 2019-04-12 | 2020-10-23 | 北京百度网讯科技有限公司 | 顶点对社区的分配方法、装置以及终端 |
CN111986314B (zh) * | 2020-08-21 | 2022-08-16 | 浙江商汤科技开发有限公司 | 三维重建中的图像分组方法及装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324937A (zh) * | 2007-06-15 | 2008-12-17 | 国际商业机器公司 | 用于粗化图的系统和方法 |
CN103942308A (zh) * | 2014-04-18 | 2014-07-23 | 中国科学院信息工程研究所 | 大规模社交网络社区的检测方法及装置 |
CN104077280A (zh) * | 2013-03-25 | 2014-10-01 | 中兴通讯股份有限公司 | 社区发现并行化方法和系统、主节点和运算节点设备 |
CN104581734A (zh) * | 2013-10-17 | 2015-04-29 | 中国移动通信集团广东有限公司 | 一种网络社区划分方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150220627A1 (en) * | 2014-02-04 | 2015-08-06 | International Business Machines Corporation | System and method for finding collective interest-based social communities |
-
2018
- 2018-11-06 CN CN201811311929.0A patent/CN109408722B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324937A (zh) * | 2007-06-15 | 2008-12-17 | 国际商业机器公司 | 用于粗化图的系统和方法 |
CN104077280A (zh) * | 2013-03-25 | 2014-10-01 | 中兴通讯股份有限公司 | 社区发现并行化方法和系统、主节点和运算节点设备 |
CN104581734A (zh) * | 2013-10-17 | 2015-04-29 | 中国移动通信集团广东有限公司 | 一种网络社区划分方法及装置 |
CN103942308A (zh) * | 2014-04-18 | 2014-07-23 | 中国科学院信息工程研究所 | 大规模社交网络社区的检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109408722A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8224825B2 (en) | Graph-processing techniques for a MapReduce engine | |
KR101999639B1 (ko) | 데이터 처리 시스템, 계산 노드 및 데이터 처리 방법 | |
CN109299190B (zh) | 分布式存储系统中处理对象的元数据的方法及装置 | |
CN109032803B (zh) | 数据处理方法和装置、客户端 | |
CN109710406B (zh) | 数据分配及其模型训练方法、装置、及计算集群 | |
CN109408722B (zh) | 社区划分方法、装置、计算设备及存储介质 | |
US11842220B2 (en) | Parallelization method and apparatus with processing of neural network model for manycore system | |
CN112148492A (zh) | 一种考虑多用户移动性的服务部署和资源分配方法 | |
Sasidharan et al. | Miniamr-a miniapp for adaptive mesh refinement | |
Sattar et al. | Parallelizing louvain algorithm: Distributed memory challenges | |
CN110764824A (zh) | 一种gpu上的图计算数据划分方法 | |
CN109788006B (zh) | 数据均衡方法、装置及计算机设备 | |
CN104657216A (zh) | 一种资源池的资源分配方法及装置 | |
CN116962438A (zh) | 一种梯度数据同步方法、系统、电子设备及可读存储介质 | |
CN106933882B (zh) | 一种大数据增量计算方法和装置 | |
Ye et al. | GCplace: geo-cloud based correlation aware data replica placement | |
Gangeshwari et al. | Hpcloud: A novel fault tolerant architectural model for hierarchical mapreduce | |
Wang et al. | On runtime adaptive tile defragmentation for resource management in many-core systems | |
CN112417478A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN108009099B (zh) | 一种应用于K-Mean聚类算法中的加速方法及其装置 | |
Huang et al. | Resource provisioning with QoS in cloud storage | |
WO2011131248A1 (en) | Method and apparatus for losslessly compressing/decompressing data | |
CN117014318B (zh) | 多尺度网络节点间链路的添加方法、装置、设备及介质 | |
CN115277231B (zh) | 防火墙安全配置方法、装置、计算机设备及存储介质 | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |