本说明书一个或多个实施例涉及计算机领域,尤其涉及基于结构图的社区发现方法和装置。
背景技术:
1、在数学领域,图是由一组顶点(也称为节点或点)以及一组连接这些顶点的边(也称为弧或线)组成的组合结构,用来模拟实体之间的关系。在结构图中具有两个基本要素,分别为顶点和边。其中,顶点,是图中的基本单位,代表实体或对象。边,也称为连接边,是图中连接两个顶点的线段,代表顶点之间的某种关系或连接。图数据中可能包含了用户的隐私数据。
2、结构图包括同质图和异质图。同质图:图中所有顶点属于同一类别,并具有相同类型的边。异质图:图中包含不同类型的顶点和边,顶点和边根据其属性和意义被划分为不同的类别。
3、当前,常常基于图算法来解决社区发现等问题。可以理解的是,图算法为一系列在图数据上执行的算法。社区发现:是在图数据中识别具有相似性或密集连接的顶点群组的过程,这些群组内部的连接密度比外部的连接密度要高。现有技术中,在基于结构图的社区发现中,由于图算法计算的复杂度和庞大的业务图数据规模,常常无法保证时效性。
技术实现思路
1、本说明书一个或多个实施例描述了一种基于结构图的社区发现方法和装置,能够大幅提升时效性。
2、第一方面,提供了一种基于结构图的社区发现方法,结构图包括代表m个用户的m个实体顶点,方法包括:
3、基于所述结构图,初始化社区图,其中各个社区由实体顶点代表,并具有社区属性,所述社区属性包括对应社区的确定性指标;各社区被添加有原子锁;
4、采用多个线程并行执行若干轮第一图迭代,其中,任意的第一线程执行的当前轮图迭代包括,对于第一线程负责处理的任意的第一实体顶点,确定与其满足预设关系的各个邻居实体顶点所属的各个目标社区,在取得各个目标社区的原子锁后,根据所述各个目标社区的社区属性,确定所述第一实体顶点是否需要移动,并在需要移动时,更新相关社区的社区属性,在更新后释放所述原子锁;
5、根据所述若干轮第一图迭代后实体顶点的社区归属,将任一社区中的实体顶点聚合成新的代表该社区的实体顶点,以更新所述社区图。
6、在一种可能的实施方式中,所述结构图还包括代表用户的n类特征的各个可选特征取值的若干个辅助顶点,任一实体顶点与该用户实际特征取值对应的辅助顶点之间具有连接边,所述确定性指标根据社区中各个实体顶点关联的各类辅助顶点的特征取值的分布而确定。
7、在一种可能的实施方式中,所述实体顶点具有顶点属性;所述顶点属性用于指示对应的实体顶点归入的社区;所述确定与其满足预设关系的各个邻居实体顶点所属的各个目标社区,包括:
8、遍历与其满足预设关系的各个邻居实体顶点,根据邻居实体顶点关联的顶点属性确定其所在的社区。
9、进一步地,所述方法还包括:
10、在需要移动时,更新所述第一实体顶点的顶点属性。
11、在一种可能的实施方式中,所述根据所述各个目标社区的社区属性,确定所述第一实体顶点是否需要移动,包括:
12、根据任一目标社区的社区属性,确定将所述第一实体顶点移动到该目标社区后的确定性指标的增益;
13、根据所述各个目标社区的增益,确定所述第一实体顶点是否需要移动到其中一个目标社区。
14、在一种可能的实施方式中,所述方法还包括:
15、针对更新后的所述社区图,执行若干轮第二图迭代,其中至少一轮第二图迭代包括:所述采用多个线程并行执行所述若干轮第一图迭代。
16、在一种可能的实施方式中,所述基于所述结构图,初始化社区图,基于并行计算模式而进行。
17、在一种可能的实施方式中,所述预设关系包括:与其具有至少一个共同连接的辅助顶点的二度邻居实体顶点;或者,与其具有多个共同连接的辅助顶点的二度邻居实体顶点。
18、在一种可能的实施方式中,所述方法还包括:
19、基于所述社区图,初始化关联图;其中若所述社区图中的第一实体顶点和第二实体顶点之间满足所述预设关系,则将第一实体顶点和第二实体顶点加入关联图中,并在所述关联图中添加二者之间的连接边;
20、所述确定与其满足预设关系的各个邻居实体顶点所属的各个目标社区之前,还包括:
21、在所述关联图中,查找与其具有连接边的实体顶点,作为与其满足预设关系的各个邻居实体顶点。
22、进一步地,所述社区图或所述关联图采用行压缩存储(compressed sparse row,csr)或列压缩存储(compressed sparse co l umn,csc)的存储方式,以存储图结构信息。
23、进一步地,所述若干轮第二图迭代形成多层级社区,第n+1轮第二图迭代得到的社区与第n轮第二图迭代得到的社区之间形成层级关系。
24、进一步地,所述社区属性还包括:
25、社区中各个实体顶点关联的各类辅助顶点的特征取值的集合;
26、所述确定将所述第一实体顶点移动到该目标社区后的确定性指标的增益,包括:
27、将所述第一实体顶点关联的各类辅助顶点的特征取值加入到所述目标社区的特征取值的集合中,得到更新集合;
28、根据所述更新集合,计算更新后的确定性指标;
29、将更新后的确定性指标减去所述社区属性中包括的更新前的确定性指标,得到所述增益。
30、进一步地,所述社区属性还包括:
31、社区中包含的实体顶点的数目;
32、所述执行若干轮第二图迭代之后,所述方法还包括:
33、输出各个社区分别对应的社区属性。
34、在一种可能的实施方式中,所述第一图迭代的停止条件为,各个实体顶点所属的社区均不再发生变化。
35、进一步地,所述第二图迭代的停止条件为,社区数量不再发生变化。
36、第二方面,提供了一种基于结构图的社区发现装置,结构图包括代表m个用户的m个实体顶点,装置包括:
37、初始化单元,用于基于所述结构图,初始化社区图,其中各个社区由实体顶点代表,并具有社区属性,所述社区属性包括对应社区的确定性指标;各社区被添加有原子锁;
38、第一迭代单元,用于采用多个线程并行执行若干轮第一图迭代,其中,任意的第一线程执行的当前轮图迭代包括,对于第一线程负责处理的任意的第一实体顶点,确定与其满足预设关系的各个邻居实体顶点所属的各个目标社区,在取得各个目标社区的原子锁后,根据所述各个目标社区的社区属性,确定所述第一实体顶点是否需要移动,并在需要移动时,更新相关社区的社区属性,在更新后释放所述原子锁;
39、聚合单元,用于根据所述第一迭代单元执行若干轮第一图迭代后实体顶点的社区归属,将任一社区中的实体顶点聚合成新的代表该社区的实体顶点,以更新所述社区图。
40、第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
41、第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
42、通过本说明书实施例提供的方法和装置,首先基于结构图,初始化社区图,其中各个社区由实体顶点代表,并具有社区属性,所述社区属性包括对应社区的确定性指标;各社区被添加有原子锁;然后采用多个线程并行执行若干轮第一图迭代,其中,任意的第一线程执行的当前轮图迭代包括,对于第一线程负责处理的任意的第一实体顶点,确定与其满足预设关系的各个邻居实体顶点所属的各个目标社区,在取得各个目标社区的原子锁后,根据所述各个目标社区的社区属性,确定所述第一实体顶点是否需要移动,并在需要移动时,更新相关社区的社区属性,在更新后释放所述原子锁;最后根据所述若干轮第一图迭代后实体顶点的社区归属,将任一社区中的实体顶点聚合成新的代表该社区的实体顶点,以更新所述社区图。由上可见,本说明书实施例,多个线程并行执行过程中,通过为各社区添加原子锁,避免线程冲突,及时获取和更新社区属性,一个顶点社区的变化会直接影响本轮计算中后续顶点的计算,保证了在计算时针对每个实体顶点能够获取到目标社区的最新的社区属性,加快了顶点状态的变化信息传递到其他顶点的过程,极大的提升了收敛速度,部分数据集上带来了数量级以上的收敛速度减少,能够大幅提升时效性。