基于Spark的节点相似度计算方法、装置及终端制造方法及图纸

技术编号:23239573 阅读:28 留言:0更新日期:2020-02-04 18:46
本发明专利技术实施例提供一种基于Spark的节点相似度计算方法、装置及终端,方法包括:获取待处理的二部图中的节点数据,对节点数据进行序列化处理;根据处理后的节点数据生成概率转移矩阵和相似度矩阵;对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;将中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;根据最终结果矩阵获得节点之间的相似度。本发明专利技术提供的技术方案,具体为一种基于Spark的大规模矩阵乘法算法,能够对数据进行多级自适应分片,并可以将Simrank计算公式过程拆分为两部分,降低了计算规模和中间数据存储规模;从而能够高效地计算亿级别节点之间的相似度。

Calculation method, device and terminal of node similarity based on spark

【技术实现步骤摘要】
基于Spark的节点相似度计算方法、装置及终端
本专利技术涉及数据处理
,尤其涉及一种基于Spark的节点相似度计算方法、装置及终端。
技术介绍
Simrank是一种用于计算图中节点之间相似度的技术,如在二部图中,图中有两种类型的节点,同一种类型的节点之间没有边相连,两种不同类型的节点之间才有边相连,Simrank算法可以计算同一种类型节点之间的相似度。如电商场景的个性化推荐中,用户集合与商品集合的关系可以抽象为二部图,用户点击过商品,则该用户与点击的商品之间可以有边相连,通过Simrank可以计算二部图中用户之间或者商品之间的相似度;在搜索广告场景中,用户搜索并点击过广告,用户使用过的检索内容(称作query)的集合与广告(称作ad)的集合的关系可以抽象为二部图,指定的query检索得到的ad列表中有ad被点击,则指定的query与被点击的ad之间可以有边相连,通过Simrank可以计算二部图中query之间或者ad之间的相似度。Simrank这种基于图的结构关系计算节点间的相似度,以及相似度传播的特点,常常被应用在推荐、搜索广告的召回阶段,为后续排序过程挖掘出候选项。对于应用Simrank算法计算二部图中同一种类型节点间的相似度而言,当面对大规模的数据量,如亿级别数量的节点间相似度时,会发生数据异构、时间和空间太大等问题,在计算过程中,会出现计算和存储开销大导致无法计算或计算耗时的问题:1)以搜索广告中的query-ad构建的二部图为例,query是用户输入的字符串,可能出现中文、英文、可见/不可见字符、数字等,而且长短不一;2)Simrank的时间复杂度为O(n4),当二部图中一种类型的节点数量为106量级(百万)时,时间复杂度非常高;尽管并不是同一种类型节点,任何两个之间都相似,都需要计算相似度。不过,Simrank基于整个图的结构关系计算节点间的相似度,并且两个节点之间即时没有共同连接的节点,因为相似度传播的特点,也可能产生相似度。因此,在计算过程中,需要计算节点间相似度。3)Simrank的空间复杂度为O(n2),当二部图中一种类型的节点数量为106量级(百万)时,最终会得到1012量级(千亿)的相似对,空间复杂度非常高。而且,在迭代计算Simrank时,本轮迭代计算需要使用上一轮计算的结果,随着迭代轮数增加,每轮会有越来越多的节点间产生相似度,因此,需要存储这些大量的数据,并且,需要快速从这些大量的相似对中检索出指定的节点对在上一轮计算的相似度结果。计算过程中,非常容易发生单点内存溢出的问题,以及计算耗时久的问题。目前实现Simrank的方法,包括:普通的计算方法、基于MapReduce模型的计算方法、空间换时间的方法、近似的方法和普通的矩阵乘法,这些方法在实现Simrank时存在一定的局限性:1)普通的计算方法,即按照Simrank公式步骤计算,这种计算方式不适合分布式计算,只能在一台计算机上计算,在面临大数据量时容易发生内存溢出;2)基于MapReduce模型的计算方法,其中,MapReduce模型为一个开源的大数据分布式并行计算框架,计算过程分为Map阶段和Reduce阶段;Map阶段得到的数据项在数据量非常大的情况下,在Reduce阶段按照key求和时,会出现读取和存储数据,以及网络传输开销非常大,任务容易失败;3)基于空间换时间的方法,这种方法预先把中间结果计算好,然而在大数据量的情况下,分布式计算时,需要将计算好的中间结果分发到各个节点进行存储,读取和存储数据、网络传输和占用内存开销非常大;4)近似的方法,这种方法在计算相似度时,为了解决大数量带来的存储和计算压力,通过蒙特卡罗法模拟得到近似解,不能满足高精度的要求;5)普通的矩阵乘法,常见的如:基于MapReduce计算模型,MapReduce模型在Map阶段和Reduce阶段之间的中间结果会回落磁盘,速度较慢;而基于Spark的计算模型,常借助于Spark自带的图计算框架,在大规模数据量情况下,内置的图计算框架会面临节点间通信量较大和频繁的瓶颈。
技术实现思路
本专利技术实施例提供了一种基于Spark的节点相似度计算方法、装置及终端,用以解决现有技术中存在的上述问题或其他潜在问题。本专利技术实施例第一方面提供了一种基于Spark的节点相似度计算方法,包括:获取待处理的二部图中的节点数据,对所述节点数据进行序列化处理;根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;将所述中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;根据所述最终结果矩阵获得节点之间的相似度。如上所述的方法,对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵,包括:对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;计算处理后的所述概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;根据所述过渡矩阵和相似度矩阵获得中间结果矩阵。如上所述的方法,根据所述过渡矩阵和相似度矩阵获得中间结果矩阵,包括:对所述过渡矩阵和相似度矩阵进行多级自适应分片迭代处理;计算处理后的所述过渡矩阵与相似度矩阵的乘积,获得中间结果矩阵。如上所述的方法,根据所述最终结果矩阵获得节点之间的相似度,包括:将所述最终结果矩阵的对角线置为1;对所述最终结果矩阵中的相似对中节点进行反序列化处理,获得节点之间的相似度。如上所述的方法,所述多级自适应分片迭代处理,包括:将矩阵按照预设的矩阵行和/或矩阵列进行迭代切割处理,获得多个矩阵分片。如上所述的方法,在获得中间结果矩阵之前,所述方法还包括:获取对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理的迭代次数;若所述迭代次数大于或等于预设的次数阈值,则停止对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理;或者,若所述迭代次数小于预设的次数阈值,则继续对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理。本专利技术实施例第二方面提供了一种基于Spark的节点相似度计算装置,包括:获取模块,用于获取待处理的二部图中的节点数据,并对所述节点数据进行序列化处理;生成模块,用于根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;处理模块,用于对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;运算模块,用于将所述中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;确定模块,用于根据所述最终结果矩阵获得节点之间的相似度。如上所述的装置,所述处理模块,用于:对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;计算处理后的所述概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;根据所述过渡矩阵和本文档来自技高网
...

【技术保护点】
1.一种基于Spark的节点相似度计算方法,其特征在于,包括:/n获取待处理的二部图中的节点数据,对所述节点数据进行序列化处理;/n根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;/n对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;/n将所述中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;/n根据所述最终结果矩阵获得节点之间的相似度。/n

【技术特征摘要】
1.一种基于Spark的节点相似度计算方法,其特征在于,包括:
获取待处理的二部图中的节点数据,对所述节点数据进行序列化处理;
根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;
对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;
将所述中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;
根据所述最终结果矩阵获得节点之间的相似度。


2.根据权利要求1所述的方法,其特征在于,对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵,包括:
对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;
计算处理后的所述概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;
根据所述过渡矩阵和相似度矩阵获得中间结果矩阵。


3.根据权利要求2所述的方法,其特征在于,根据所述过渡矩阵和相似度矩阵获得中间结果矩阵,包括:
对所述过渡矩阵和相似度矩阵进行多级自适应分片迭代处理;
计算处理后的所述过渡矩阵与相似度矩阵的乘积,获得中间结果矩阵。


4.根据权利要求1所述的方法,其特征在于,根据所述最终结果矩阵获得节点之间的相似度,包括:
将所述最终结果矩阵的对角线置为1;
对所述最终结果矩阵中的相似对中节点进行反序列化处理,获得节点之间的相似度。


5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述多级自适应分片迭代处理,包括:
将矩阵按照预设的矩阵行和/或矩阵列进行迭代切割处理,获得多个矩阵分片。


6.根据权利要求1-4中任意一项所述的方法,其特征在于,在获得中间结果矩阵之前,所述方法还包括:
获取对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理的迭代次数;
若所述迭代次数大于或等于预设的次数阈值,则停止对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理;或者,
若所述迭代次数小于预设的次数阈值,则继续对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理。


7.一种基于Spark的节点相似度计算装置,其特征在于,包括:
获取模块,用于获取待处理的二部图中的节点数据,并对所述节点数据进行序列化处理;
生成模块,用于根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;

【专利技术属性】
技术研发人员:魏红亮
申请(专利权)人:优视科技中国有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1