一种基于节点分类排序的社交网络图压缩方法及系统与流程

文档序号:19749568发布日期:2020-01-21 19:10阅读:277来源:国知局
一种基于节点分类排序的社交网络图压缩方法及系统与流程

本发明属于大数据处理领域,更具体地,涉及一种基于节点分类排序的社交网络图压缩方法及系统。



背景技术:

社交网络通常由个人或组织等社会实体组成,这些社会实体通过某些特定类型的相互依赖性(如亲属关系、朋友关系、财务关系、利益关系等)产生关联。在万维网的推动下,社交网络平台陆续出现,国外的社交平台如facebook、twitter、linkedin、instagram、youtube等,国内的社交平台如qq、微信、新浪微博、豆瓣、百度贴吧等。社交网络使得人们使用互联网的方式从简单的网页浏览和信息搜索转向更加多样化的结交好友、加入社区、分享内容等等。它丰富了人与人之间沟通交流的方式,也影响着人们的生活,成为维系社会关系的重要工具,如今已经是人们生活中的重要组成部分。

随着社交网络的多元化发展和对人们生活的不断深入,社交网络包含了各行各业的数据,创造了大量具有高价值的信息,在社会学、传播学、行为学、心理学等众多领域都引起了广泛关注。但是信息的重要价值隐藏在复杂的分析算法背后,于是基于社交网络的分析和研究不断涌现,试图了解社交网络的结构与演化、群体与互动、信息与传播规律,例如,社区发现、链接预测、社交推荐、影响力分析等。在实际中,往往将社交网络建模成一个图,以实现对社交网络的存储和分析。在社交网络图中,每个社会实体可以看作是一个节点,实体之间的关系可以看作是一条边。随着社交网络用户的不断增长,社交网络图也越来越大,这给社交网络的存储和分析都带来了挑战。

为了应对上述挑战,图压缩算法应运而生。图压缩算法包括节点排序和编码两个阶段,用于挖掘可压缩冗余,编码阶段用于消除冗余。现有面向社交网络图应节点排序阶段用的压缩算法多种多样,然后有的采用复杂编码技术提升压缩率但无法保证图计算任务的运行性能、有的采用简单编码技术保证图计算任务的运行性能但牺牲了压缩率,无法兼顾二者。



技术实现要素:

针对现有技术的缺陷和改进需求,本发明提供了一种基于节点分类排序的社交网络图压缩方法及系统,其目的在于,在保证图计算任务运行性能的情况下,提高社交网络图的压缩率。

为实现上述目的,按照本发明的第一方面,提供了一种基于节点分类排序的社交网络图压缩方法,包括:

获得社交网络图中各节点的入度,以获得其中的零入度节点以及入度最高的前top-k节点,将入度最高的前top-k个节点作为高入度节点,并将零入度节点和高入度节点之外的节点作为社区节点;

根据入邻居节点的相似性将高入度节点划分为不同的领域,并将相同领域内的高入度节点排序到一起;通过社区发现将社区节点划分为不同社区,并将相同社区内的社区节点排序到一起;将所有的零入度节点一起排序到末尾;

根据排序后的节点建立社交网络图的图邻接矩阵,并将图邻接矩阵的每一行中连续的b个比特作为一个比特行,从而将图邻接矩阵的每一个行划分为一个比特行序列;

对于每一个节点,仅对其出邻居节点所在的比特行进行存储并进行固定长度的编码,从而完成对社交网络图的压缩;

其中,top-k为预设的高入度节点数,固定长度编码的编码长度为b。

社交网络具有无标度、社区结构、链接互惠性质。根据社交网络图的性质,少数高入度的枢纽节点具有多数边,这些边位于图邻接矩阵非对角区域,影响着非对角区域的局部性;低度的社区节点聚集为多个社区,社区内的边位于图邻接矩阵对角区域,会影响图邻接矩阵对角区域的局部性,社区内联系越紧密,图邻接矩阵对角区域的局部性会更好;零入度节点不存在于其他节点的邻居中,如果这些节点不连续,会分散图节点的其他邻居,降低局部性。

本发明在节点排序阶段,根据节点的入度信息,将社交网图中的节点划分为高入度节点、社区节点和零入度节点这三类节点,并针对不同类别的节点采用不同的排序策略进行排序,将相同领域内的高入度节点排序在一起,相同社区内的社区节点排序在一起,并将所有的零入度节点一起排序到末尾,由此能够充分挖掘图邻接矩阵对角区域和非对角区域的局部性,使得节点排序后的社交网络图呈现出良好的局部性,具有大量可消除冗余,扩大可压缩范围,提高了社交网络图的压缩率;同时本发明在编码阶段,采用固定长度编码,并且仅编码必要信息以减小需要的存储空间需求,从而保证了后续的图计算任务可以高效的执行。总的来说,本发明能够在保证图计算任务运行性能的情况下,提高社交网络图的压缩率。

进一步地,获得社交网络图中入度最高的前top-k节点作为高入度节点,其方法包括:

利用timsort排序算法,按照入度降序的顺序对社交网络图中的节点进行排序,将排序后最靠前的top-k个节点确定为社交网络图中的高入度节点。

timsort是一种快速稳定的自适应排序算法,是起源于归并排序和插入排序的混合排序算法,最好情况下的时间复杂度是o(n),最差情况下的时间复杂度是o(nlogn);本发明在对节点进行分类时,采用timsort排序算法对节点进行排序,能够快速完成节点分类,并保证分类结果的稳定性。

进一步地,根据入邻居节点的相似性将高入度节点划分为不同的领域,包括:

为每个高入度节点计算多个minhash特征值,并将每一个高入度节点的多个minhash特征值划分为多组特征值;

根据高入度节点的minhash特征值,通过lsh算法将各高入度节点映射到哈希桶中,在映射的过程中,若任意两个高入度节点之间存在一组完全相同的特征值,则将这两个高入度节点映射到同一个哈希桶中;

所有高入度节点均被映射到哈希桶之后,由每一个哈希桶中的高入度节点构成一个领域。

minhash是一种快速估计两个集合相似程度的技术,用于检测重复的网页并将其从搜索结果中删除,也被应用于大规模的聚类问题,例如通过它们的单词集合的相似度来聚类文档;minhash不计算所有节点的相似度,而是以快速估计为目标,对相似度计算进行降维,对每个节点用一种hash函数计算特征值,通过特征值比较其相似度,计算出的相似度和jaccard相似度相同,但minhash可以缩短计算时间。lsh(localitysensitivehashing,局部敏感哈希)是一种用于海量高维数据的近似最近邻居快速查找技术,用来做近似查询,将邻居相似的节点聚集到一起,减小查找范围,避免比较邻居不相似的节点。

本发明结合minhash和lsh将高入度节点划分为不同的领域,能够将入邻居节点相似的高入度节点映射到相同的哈希桶中,同时缩短领域划分时间,从而能够快速、准确地完成对高入度节点的排序。

进一步地,对高入度节点进行排序时,每一个哈希桶中,被排序的节点数量为b的正整数倍,且未被排的节点数量小于b;

将所有未被排序的高入度节点回退为社区节点,参与社区节点的排序。

本发明根据固定长度编码的编码长度对同一领域中高入度节点的数量进行调整,能够为后续编码阶段的处理提供便利,避免发生偏移。

进一步地,将社区节点划分为不同社区,所采用的社区发现算法是lpa算法。

lpa算法利用网络结构指导标签传播,这个过程无需任何优化函数,而且算法初始化之前是不需要知道社区的个数的,而且lpa算法具有线性时间的复杂度,是一种快速有效的社区发现算法;在lpa算法中,每个节点采用在邻居中更频繁出现的标签会使得网络中的每个节点选择加入最大的邻近社区,从而产生一个巨大的稀疏的社区,这会影响社区划分的效果;而在本发明中,当去掉高入度节点和零入度节点以及它们关联的边后,剩余的子图会因为高入度节点所在边的断裂而具有很多非连通组件,社区之间的关系更加微弱,社区的划分也会更清晰,从而避免产生巨大的稀疏社区;因此,在本发明中,利用lpa算法既能够快速有效地完成社区发现,还能获得较好的社区划分结果。

进一步地,对社区进行排序时,优先排序大小为r*b的社区;

其中,r为正整数。

本发明根据固定编码的编码长度确定社区的排序优先级,能够为后续编码阶段的处理提供便利,避免发生偏移。

进一步地,对于每一个节点,其存储其出邻居节点所在的比特行的存储格式为<偏移,内容>二元组,其中,偏移用于计算比特行在相应的矩阵行中的起始偏移量,内容为构成比特行的比特序列。

进一步地,还包括:

在图计算任务中,从压缩后的社交网络图中读取当前节点的邻居节点所在的比特行并进行解码,以得到比特行的二元组,根据二元组中的偏移和内容恢复出当前节点的邻居节点id;根据当前节点的邻居节点id完成图计算任务。

按照本发明的第二方面,提供了一种系统,包括处理器和计算机可读存储介质,计算机可读存储介质用于存储计可执行程序;

处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的基于节点分类排序的社交网络图压缩方法。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

(1)本发明所提供的基于节点分类排序的社交网络图压缩方法及系统,节点排序阶段,根据节点的入度信息,将社交网图中的节点划分为高入度节点、社区节点和零入度节点这三类节点,并针对不同类别的节点采用不同的排序策略进行排序,能够充分挖掘图邻接矩阵对角区域和非对角区域的局部性,使得节点排序后的社交网络图呈现出良好的局部性,具有大量可消除冗余,扩大可压缩范围,提高了社交网络图的压缩率;在编码阶段,采用固定长度编码,并且仅编码必要信息以减小需要的存储空间需求,从而保证了后续的图计算任务可以高效的执行。因此,本发明能够在保证图计算任务运行性能的情况下,提高社交网络图的压缩率。

(2)本发明所提供的基于节点分类排序的社交网络图压缩方法及系统,节点排序阶段,结合minhash和lsh将高入度节点划分为不同的领域,能够将入邻居节点相似的高入度节点映射到相同的哈希桶中,同时缩短领域划分时间,从而能够快速、准确地完成对高入度节点的排序。

(3)本发明所提供的基于节点分类排序的社交网络图压缩方法及系统,在对高入度节点的领域进行排序时,根据固定长度编码的编码长度对同一领域中高入度节点的数量进行调整,能够为后续编码阶段的处理提供便利,避免发生偏移。

(4)本发明所提供的基于节点分类排序的社交网络图压缩方法及系统,在对社区节点的社区进行排序时,根据固定编码的编码长度确定社区的排序优先级,能够为后续编码阶段的处理提供便利,避免发生偏移。

附图说明

图1为本发明实施例提供的基于节点分类排序的社交网络压缩方法的执行及应用示意图;

图2为本发明实施例提供的零入度节点排序示意图;其中,(a)为对零入度节点排序前的示意图,(b)为对零入度节点排序后的示意图;

图3为本发明实施例提供的高入度节点排序方法流程图;

图4为本发明实施例提供的社区节点排序方法流程图;

图5为本发明实施例提供的编码示意图;其中,(a)为编码前格式,(b)为节点排序后的图邻接矩阵,(c)为编码后格式。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

社交网络具有无标度、社区结构、链接互惠性质。根据社交网络图的性质,少数高入度的枢纽节点具有多数边,这些边位于图邻接矩阵非对角区域,影响着非对角区域的局部性;低度的社区节点聚集为多个社区,社区内的边位于图邻接矩阵对角区域,会影响图邻接矩阵对角区域的局部性,社区内联系越紧密,图邻接矩阵对角区域的局部性会更好;零入度节点不存在于其他节点的邻居中,如果这些节点不连续,会分散图节点的其他邻居,降低局部性。现有的社交网络图压缩方法,对于社交网络图中的局部性挖掘不够充分,因此,在图计算任务的执行效率和图压缩率之间无法二者兼顾。

为了在保证图计算任务运行性能的情况下,提高社交网络图的压缩率,本发明实施例提供的基于节点分类排序的社交网络图压缩方法,如图1所示,包括:

获得社交网络图中各节点的入度,以获得其中的零入度节点以及入度最高的前top-k节点,将入度最高的前top-k个节点作为高入度节点,并将零入度节点和高入度节点之外的节点作为社区节点;

根据入邻居节点的相似性将高入度节点划分为不同的领域,并将相同领域内的高入度节点排序到一起,由此能够充分挖掘社交网络图的图邻接矩阵中非对角区域的局部性;

通过社区发现将社区节点划分为不同社区,并将相同社区内的社区节点排序到一起,由此能够充分挖掘社交网络图中对角区域的局部性;

将所有的零入度节点一起排序到末尾,通过将零入度节点集中排序到末尾,能够避免零入度节点分散图节点的其他邻居;如图2所示,若图中存在四个零入度节点(1,4,6,7),节点出邻居零散分布在整个邻接矩阵,将零入度节点集中排序到末尾后,节点邻居分布在邻接矩阵的左侧,节点邻居的分布更加紧凑,节点邻居的间隔更小,局部增增强;

根据排序后的节点建立社交网络图的图邻接矩阵,并将图邻接矩阵的每一行中连续的b个比特作为一个比特行,从而将图邻接矩阵的每一个行划分为一个比特行序列;排序后的图已经呈现局部性,可以挖掘出可消除冗余;

对于每一个节点,仅对其出邻居节点所在的比特行进行存储并进行固定长度的编码,从而完成对社交网络图的压缩;仅编码必要信息可以减小需要的存储空间需求;

其中,top-k为预设的高入度节点数,固定长度编码的编码长度为b;对具有局部性的图,节点出邻居将很可能集中位于少量的比特行序列,仅存储节点出邻居所在的bit行序列,可以有效减少需要存储的内容,比特行序列的长度b应根据实际的社交网络特性设定,若设置过小,将导致需要存储的偏移过多,而设置过大,则会导致存储过多冗余的比特“0”元素,在本发明实施例中,将比特行的长度设为8字节(64bits),但仍将bit行序列长度设置为可调参数b;编码过程中需要将节点的每个出邻居映射到比特行序列的对应比特位,相当于对每条边进行一次计算,时间复杂度为o(m)。

作为一个优选的实施方式,在本发明实施例中,获得社交网络图中入度最高的前top-k节点作为高入度节点,其方法包括:

利用timsort排序算法,按照入度降序的顺序对社交网络图中的节点进行排序,将排序后最靠前的top-k个节点确定为社交网络图中的高入度节点;由此能够快速完成节点分类,并保证分类结果的稳定性。

作为一个优选的实施方式,在本发明实施例中,根据入邻居节点的相似性将高入度节点划分为不同的领域,如图3所示,包括:

为每个高入度节点计算多个minhash特征值,并将每一个高入度节点的多个minhash特征值划分为多组特征值;

根据高入度节点的minhash特征值,通过lsh算法将各高入度节点映射到哈希桶中,在映射的过程中,若任意两个高入度节点之间存在一组完全相同的特征值,则将这两个高入度节点映射到同一个哈希桶中;

所有高入度节点均被映射到哈希桶之后,由每一个哈希桶中的高入度节点构成一个领域;

通过结合minhash和lsh将高入度节点划分为不同的领域,能够将入邻居节点相似的高入度节点映射到相同的哈希桶中,同时缩短领域划分时间,从而能够快速、准确地完成对高入度节点的排序;

由于在编码阶段采用固定长度编码,在本发明实施例中,在排序阶段,对高入度节点进行排序时,每一个哈希桶中,被排序的节点数量为b的正整数倍,且未被排的节点数量小于b;

将所有未被排序的高入度节点回退为社区节点,参与社区节点的排序。

根据固定长度编码的编码长度对同一领域中高入度节点的数量进行调整,能够为后续编码阶段的处理提供便利,避免发生偏移。

为了快速有效地完成社区发现,同时获得较好的社区划分结果,在本发明实施例中,将社区节点划分为不同社区,所采用的社区发现算法是lpa算法;由于当去掉高入度节点和零入度节点以及它们关联的边后,剩余的子图会因为高入度节点所在边的断裂而具有很多非连通组件,社区之间的关系更加微弱,社区的划分也会更清晰,从而避免产生巨大的稀疏社区;因此,在此利用lpa算法既能够快速有效地完成社区发现,还能获得较好的社区划分结果;使用lpa算对社区节点进行排序时,具体的执行流程如图4所示;

由于在编码阶段采用固定长度编码,在本发明实施例中,在排序阶段,对社区进行排序时,优先排序大小为r*b(r为正整数)的社区;

根据固定编码的编码长度确定社区的排序优先级,能够为后续编码阶段的处理提供便利,避免发生偏移。

在本发明实施例中,对于每一个节点,其存储其出邻居节点所在的比特行的存储格式为<偏移,内容>二元组,其中,偏移用于计算比特行在相应的矩阵行中的起始偏移量,内容为构成比特行的比特序列。

图5所示为一个编码的具体示例,其中,共包括9个节点,编号依次为0~8,每个比特行的长度为b=4,进行编码前,各节点的邻居信息如图5(a)所示;根据排序后的节点所建立社交网络图的图邻接矩阵如图5(b)所示,其中,每一行对应一个节点的出邻居节点信息,其中“0”表示对应的节点不是当前节点的邻居节点,“1”表示对应的节点是当前节点的邻居节点,每一行中全零的比特行没有示出;经过固定长度编码之后,编码结果如图5(c)所示,对于每一个节点仅存储其邻居节点所在的比特行,即每一行中仅存储含比特“1”的比特行,每一个比特行的存储格式为<偏移,内容>二元组,偏移用于指示比特行在相应的矩阵行中的偏移量,内容为构成比特行的比特序列,根据比特行的偏移和内容可以恢复出邻居节点的id;例如,在图5(c)中,节点6的出邻居节点所在的比特行共两个,分别是<0,(0101)2>和<1,(1000)2>,第一个比特行的偏移为0,内容为“0101”,根据偏移可知该比特行在第6行的起始偏移位置为0,该比特行所对应的节点中,第1个和第3个为节点6的出邻居节点,相应地,节点6的出邻居节点序号为1和3;第二个比特行的偏移为1,内容为“1000”,根据偏移可知该比特行在第6行的起始偏移位置为1*b=4,该比特行对应的节点中,第0个为节点6的出邻居节点,相应地,节点6的出邻居节点序号为4;获得邻居节点的序号后,根据节点分类排序前后的节点映射表即可恢复出邻居节点的id。

基于上述社交网络图压缩方法,如图1所示,在处理图计算任务是,还包括:

在图计算任务中,从压缩后的社交网络图中读取当前节点的邻居节点所在的比特行并进行解码,以得到比特行的二元组,根据二元组中的偏移和内容恢复出当前节点的邻居节点id;根据当前节点的邻居节点id完成图计算任务,即利用收集到的邻居节点信息进行计算并更新当前节点的数据,利用计算结果更新当前节点的邻居节点的数据,重复以上收集邻居信息、更新当前节点的数据以及更新邻居节点的数据的操作,直至节点数据不再变化。

按照本发明的第二方面,提供了一种系统,包括处理器和计算机可读存储介质,计算机可读存储介质用于存储计可执行程序;

处理器用于读取计算机可读存储介质中存储的可执行程序,执行上述基于节点分类排序的社交网络图压缩方法。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1