CN110751161A - 基于Spark的节点相似度计算方法、装置及终端 - Google Patents
基于Spark的节点相似度计算方法、装置及终端 Download PDFInfo
- Publication number
- CN110751161A CN110751161A CN201810811936.0A CN201810811936A CN110751161A CN 110751161 A CN110751161 A CN 110751161A CN 201810811936 A CN201810811936 A CN 201810811936A CN 110751161 A CN110751161 A CN 110751161A
- Authority
- CN
- China
- Prior art keywords
- matrix
- similarity
- processing
- nodes
- node
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 80
- 239000011159 matrix material Substances 0.000 claims abstract description 325
- 238000012545 processing Methods 0.000 claims abstract description 96
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000007704 transition Effects 0.000 claims abstract description 84
- 238000013467 fragmentation Methods 0.000 claims abstract description 35
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 35
- 238000012546 transfer Methods 0.000 claims abstract description 9
- 230000003044 adaptive effect Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 abstract description 38
- 238000004422 calculation algorithm Methods 0.000 abstract description 5
- 238000013500 data storage Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 238000000342 Monte Carlo simulation Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种基于Spark的节点相似度计算方法、装置及终端,方法包括:获取待处理的二部图中的节点数据,对节点数据进行序列化处理;根据处理后的节点数据生成概率转移矩阵和相似度矩阵;对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;将中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;根据最终结果矩阵获得节点之间的相似度。本发明提供的技术方案,具体为一种基于Spark的大规模矩阵乘法算法,能够对数据进行多级自适应分片,并可以将Simrank计算公式过程拆分为两部分,降低了计算规模和中间数据存储规模;从而能够高效地计算亿级别节点之间的相似度。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于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的节点相似度计算终端,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的一种基于Spark的节点相似度计算方法。
本发明实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序;
所述计算机程序被处理器执行以实现如第一方面所述的一种基于Spark的节点相似度计算方法。
本发明实施例提供的基于Spark的节点相似度计算方法、装置及终端,具体为一种基于Spark的大规模矩阵乘法算法,能够对数据进行多级自适应分片,并可以将Simrank计算公式过程拆分为两部分,降低了计算规模和中间数据存储规模;从而能够高效地计算亿级别节点之间的相似度,有效地保证了该方法使用的准确可靠性,有利于市场的推广与应用。
附图说明
图1是本发明实施例提供的二部图的连接关系示意图;
图2为本发明实施例提供的一种基于Spark的节点相似度计算方法的流程示意图;
图3为本发明实施例提供的对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵的流程示意图;
图4为本发明实施例提供的根据所述过渡矩阵和相似度矩阵获得中间结果矩阵的流程示意图;
图5为本发明实施例提供的根据所述最终结果矩阵获得节点之间的相似度的流程示意图;
图6为本发明实施例提供的另一种基于Spark的节点相似度计算方法的流程示意图;
图7为本发明实施例提供的一种基于Spark的节点相似度计算装置的结构示意图;
图8为本发明实施例提供的一种基于Spark的节点相似度计算终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤的过程或结构的装置不必限于清楚地列出的那些结构或步骤而是可包括没有清楚地列出的或对于这些过程或装置固有的其它步骤或结构。
为了便于理解本申请的技术方案,下面以二部图为例,首先介绍Simrank的计算过程。如图1所示,假设下面二部图是query~ad之间的连接关系,其中,q0、q1和q2是query的3个节点,ad0和ad1是ad的2个节点,图中位于边上的数字代表边的权重。
基于Simrank分别计算query和ad之间的相似度,这里以计算q0和q1之间,以及ad0和ad1之间的相似度为例:
其中,St(i,j)表示第t轮节点i和j之间的相似度,St+1(i,j)表示第t+1轮节点i和j之间的相似度,N(q0)表示节点q0连接的ad的数量,N(q1)表示节点q1连接的ad的数量,N(ad0)表示节点ad0连接的query的数量,N(ad1)表示节点ad1连接的query的数量,E(q0)表示节点q0连接的ad的集合,E(q1)表示节点q1连接的ad的集合,E(qad0)表示节点ad0连接的query的集合,E(ad1)表示节点ad1连接的query的集合。常数C表示衰减系数,取值在[0,1.0],这里默认取0.8。初始化时,节点与自身的相似度定义为1.0,同一种类型节点不同节点间相似度为0,通过上述公式迭代5轮后,节点间的相似度将保持稳定不变。
图2为本发明实施例提供的一种基于Spark的节点相似度计算方法的流程示意图,进一步的,参考附图2可知,本实施例提供了一种基于Spark的节点相似度计算方法,其中,Spark是一个开源的大数据分布式并行计算框架,计算过程中的数据被抽象为弹性分布式数据集,并基于弹性分布式数据集进行计算;具体的,该方法可以通过矩阵相乘到的方式来计算节点的相似度,包括:
S101:获取待处理的二部图中的节点数据,对节点数据进行序列化处理;
首先,可以获取到待处理的原始数据,将原始数据映射至二部图中,即可获取到待处理的二部图节点数据,进一步的,对二部图中的节点数据进行序列化;具体的,对于二部图中的节点而言,可以分别对每种类型节点从0开始编号,这样每一个节点都会对应一个整数,从而便于在后面的计算过程中通过对应的整数代替原始节点内容,进而可以有效地避免异构节点影响计算效率。
S102:根据处理后的节点数据生成概率转移矩阵和相似度矩阵;
在获取到经过序列化处理后的节点数据之后,可以基于节点数据生成概率转移矩阵和相似度矩阵,其中,如下表1所示,概率转移矩阵中包括多个节点的概率,该概率为二部图中边的一端节点随机游走到另一端节点的概率。具体在Simrank中,一个节点会等概率的游走到连接的另一种类型的节点上,如图1所示,节点q1能够直接游走的节点包括ad0和ad1,游走到这两个节点的概率均为1/2,而q0只连接了节点ad0,因此q0游走到ad0的概率为1。生成概率转移矩阵,需要计算每个节点直接连接的另外一种类型节点数量和集合,即对q0的话,需要统计N(q0)以及E(q0)。
表1
q0 | q1 | q2 | ad0 | ad1 | |
q0 | 0 | 0 | 0 | 1/2 | 0 |
q1 | 0 | 0 | 0 | 1/2 | 1/2 |
q2 | 0 | 0 | 0 | 0 | 1/2 |
ad0 | 1 | 1/2 | 0 | 0 | 0 |
ad1 | 0 | 1/2 | 1 | 0 | 0 |
如下表2所示,对于相似度矩阵而言,相似度矩阵可以包括多个节点与自身的相似度,在Simrank中,节点与自身的相似度定义为1.0,其中,表格2中的sim表示为需要计算的相似度。
表2
q0 | q1 | q2 | ad0 | ad1 | |
q0 | 1.0 | sim | sim | 0 | 0 |
q1 | sim | 1.0 | sim | 0 | 0 |
q2 | sim | sim | 1.0 | 0 | 0 |
ad0 | 0 | 0 | 0 | 1.0 | sim |
ad1 | 0 | 0 | 0 | sim | 1.0 |
S103:对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;
其中,分片处理是一种常用的并行I/O技术,对矩阵采用多级自适应分片处理,有利于提高数据的存储分析性能。本实施例中,多级自适应分片迭代处理可以包括:将矩阵按照预设的矩阵行和/或矩阵列进行迭代切割处理,获得多个矩阵分片。进而在获取到概率转移矩阵和相似度矩阵之后,为了实现分布式计算的过程,可以对概率转移矩阵和相似度矩阵进行多级自适分片处理,例如,可以对概率转移矩阵和相似度矩阵分别按行存和按列存,存储时对矩阵进行切割。如要按行存储,假设矩阵有M行,要按每N个行进行切割存储,则可以切M/N份,若余数不为零,则在对矩阵进行切割时,切割份数加1;从而可以根据经过多级自适应分片迭代处理后的概率转移矩阵和相似度矩阵获得中间结果矩阵。
S104:将中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;
S105:根据最终结果矩阵获得节点之间的相似度。
在获取到最终结果矩阵之后,可以对最终结果矩阵进行分析处理,从而可以根据分析处理结果获得节点之间的相似度,具体的,由于最终结果矩阵中的节点仍然是节点的编号,因此,需要将最终结果矩阵中编号替换为原始的节点内容,即得到了节点之间的相似度。
本实施例提供的基于Spark的节点相似度计算方法,具体为一种基于Spark的大规模矩阵乘法算法,能够对数据进行多级自适应分片,并可以将Simrank计算公式过程拆分为两部分,降低了计算规模和中间数据存储规模;从而能够高效地计算亿级别节点之间的相似度,有效地保证了该方法使用的准确可靠性,有利于市场的推广与应用。
图3为本发明实施例提供的对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵的流程示意图;图4为本发明实施例提供的根据过渡矩阵和相似度矩阵获得中间结果矩阵的流程示意图;在上述实施例的基础上,继续参考附图3-4可知,本实施例对于获得中间结果矩阵的具体实现方式不做限定,本领域技术人员可以根据具体的设计需求进行设置,较为优选的,本实施例中的对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵,包括:
S1031:对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;
S1032:计算处理后的概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;
S1033:根据过渡矩阵和相似度矩阵获得中间结果矩阵。
具体的,根据过渡矩阵和相似度矩阵获得中间结果矩阵可以包括:
S10331:对过渡矩阵和相似度矩阵进行多级自适应分片迭代处理;
S10332:计算处理后的过渡矩阵与相似度矩阵的乘积,获得中间结果矩阵。
具体的,为了实现分布式计算,需要对概率转移矩阵和相似度矩阵这2个矩阵根据在乘法的左侧和右侧的位置,分别按行存和按列存,存储时对矩阵进行切割。如要按行存储,假设矩阵有M行,要按每N个行进行切割存储,则可以切M/N份,余数不为零则切割份数加1。在乘法过程中,可以进行多级切割,这里以切分3级为例,说明多级自适应分片的过程:
表3
如上表3所示,相乘的两个矩阵A和B,相乘得到的结果为矩阵C。其中,左侧矩阵A和右侧矩阵B分别先按行和按列切分,计算时分别计算对应切分的部分。若A与B分别切分为3份再相乘,过程如下:
表4
如上表4所示,矩阵A按行切分为3部分,矩阵B按列切分为3部分,相乘得到矩阵C。计算过程中,A0×B0=C00,这里C00指矩阵C中第00模块。当矩阵规模非常大时,切分一次仍然存在计算瓶颈。如上表4,如果A0的列数和B0的行数非常大时,单机计算C00占用较大的存储资源和计算资源,非常耗时。因此,这里再对上述切割后的矩阵进行二次切割,过程如下:
表5
如上表5所示,A0与B0分别按列和按行切分。切分后,计算C00的过程为:A00×B00+A01×B10+A02×B20=C00。二次切分后就可以将规模较大的A0与B0分别分为3部分相乘再相加。而在计算A00×B00时,如果A00与B00规模仍然比较大,依然可以继续进行切分,过程如下:
表6
如上表6所示,A00与B00分别按行和按列切分。切分后,A00按行切分后的最上侧的分片与B00按列切分后的最左侧的分片相乘,其他分片依次对应相乘,相乘的结果为计算C00的中间结果。
上面过程描述了通过3级切割,将大规模数据量切分为小数据量分片进行计算,降低计算数据规模,通过分布式计算,最后合成结果。可以理解的是,在设定最小分片的规模后,可根据相乘的两个矩阵的规模进行多级分片,和确定每一级分片的个数。
这里对概率转移矩阵的转置操作,可以通过取数逻辑实现,例如将概率转移矩阵已经切分为20×20的小块,在取对应的第3列第5行的那块数据时,可通过取第5列第3行的那块数据实现转置过程。
通过上述方式获得中间结果矩阵,有效地保证了中间结果矩阵获取的准确可靠性,进一步提高了该方法使用的精确程度。
图5为本发明实施例提供的根据最终结果矩阵获得节点之间的相似度的流程示意图;在上述实施例的基础上,继续参考附图5可知,本实施例中的根据最终结果矩阵获得节点之间的相似度可以包括:
S1051:将最终结果矩阵的对角线置为1;
具体的,在2个矩阵相乘的过程中,获得中间结果矩阵,而中间结果矩阵又作为乘法中的左侧矩阵,因此,需要按行存。在两个矩阵相乘过程中,直接对矩阵中乘法每一项乘以衰减系数C,如果遇到相乘得到结果项的行号与列号相同,则直接置为1.0。
S1052:对最终结果矩阵中的相似对中节点进行反序列化处理,获得节点之间的相似度。
对计算得到的相似对中节点进行反序列化;在迭代计算N轮之后,其中,N为预先设置的迭代次数;节点之间的相似度将保持稳定,由于所得到的结果中节点仍然是节点的编号,因此,需要将结果中编号替换为原始的节点内容,也即得到了节点之间的相似度。
图6为本发明实施例提供的另一种基于Spark的节点相似度计算方法的流程示意图,进一步的,参考附图6所示,为了提高节点相似度获取的准确性,在获得中间结果矩阵之前,方法还包括:
S201:获取对概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理的迭代次数;
S202:若迭代次数大于或等于预设的次数阈值,则停止对概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理;或者,
S203:若迭代次数小于预设的次数阈值,则继续对概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理。
其中,次数阈值为预先设置的数值,本领域技术人员可以根据具体的设计需求进行设置,此处,以次数阈值为5为例进行说明,当对概率转移矩阵和相似度矩阵、以及中间结果矩阵和相似度矩阵之间进行多级自适应分片处理的迭代次数达到5次,此时说明最终需要得到的节点间的相似度处于稳定状态,进而可以停止多级自适应分片处理;若当对概率转移矩阵和相似度矩阵、以及中间结果矩阵和相似度矩阵之间进行多级自适应分片处理的迭代次数未达到5次,此时最终需要得到的节点间的相似度处于不稳定状态,进而需要继续进行多级自适应分片处理。
本申请所提供的技术方案效果可通过能够计算的图节点数量规模、同等节点数量规模下计算时间和存储开销、以及计算结果是否精确无近似来进行衡量。具体的,对背景技术中提到的普通的计算方法、基于MapReduce模型的计算方法、基于空间换时间的方法、近似的方法和普通的矩阵乘法,分别与本申请所提供的技术方案的效果对比,以搜索广告业务场景中query-ad构建的二部图为输入数据进行实验,实验环境为Hadoop集群,集群内节点均为2个Intel Xeon的2.50GHz的CPU,每个CPU有16个核,内存128GB,进而可以得到如下表7所示的数据:
表7
计算方法 | 计算结果是否精确 |
普通的计算方法 | 是 |
基于MapReduce模型的计算方法 | 是 |
空间换时间的方法 | 是 |
近似的方法 | 否 |
普通的矩阵乘法 | 是 |
本专利提案方法 | 是 |
在要求结果精确的条件下,上述方法中,可以计算的节点规模对比如下表8所示:
表8
由上述表格7-8可知,本申请提供的一种基于Spark的大规模数据自适应分片技术的矩阵乘法实现Simrank,可以实现如下效果:
1)能够对数据进行多级自适应分片,在矩阵乘法过程中,通过设置最小的切割规模,将大规模数据多次切分,每次切分为多组,并根据在乘法中的左侧和右侧的位置,分别按行和按列存储,实现分布式计算,降低计算规模;
2)拆分Simrank计算公式过程为2部分,降低计算规模和中间数据存储规模;
3)通过程序设计中取数技巧实现矩阵转置的等价变换,省去了对概率转移矩阵的转置矩阵的存储;
4)将Simrank公式中的衰减因子乘法和迭代计算过程中节点与自身相似度置为1.0的操作内置在矩阵乘法中,省去再次修改矩阵的过程。
综上,本申请提供的技术方案相比于其他普通的方法而言,计算步骤少,计算结果精确,并且能够计算大规模图节点,在同等大规模节点数量下,存储开销和计算时间更少,能够高效地计算亿级别节点之间的相似度。
图7为本发明实施例提供的一种基于Spark的节点相似度计算装置的结构示意图,参考附图7所示,本实施例提供了一种基于Spark的节点相似度计算装置,该计算装置可以执行上述的节点相似度计算方法,具体的,该装置可以包括:
获取模块1,用于获取待处理的二部图中的节点数据,并对节点数据进行序列化处理;
生成模块2,用于根据处理后的节点数据生成概率转移矩阵和相似度矩阵;
处理模块3,用于对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;
运算模块4,用于将中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;
确定模块5,用于根据最终结果矩阵获得节点之间的相似度。
其中,在处理模块3进行多级自适应分片迭代处理时,该处理模块3用于执行:将矩阵按照预设的矩阵行和/或矩阵列进行迭代切割处理,获得多个矩阵分片。
本实施例对于获取模块1、生成模块2、处理模块3、运算模块4和确定模块5的具体形状结构不做限定,本领域技术人员可以根据其实现的功能作用对其进行任意设置,在此不再赘述;另外,本实施例中获取模块1、生成模块2、处理模块3、运算模块4和确定模块5所实现的操作步骤的具体实现过程以及实现效果与上述实施例中步骤S101-S105的具体实现过程以及实现效果相同,具体可参考上述陈述内容,在此不再赘述。
在上述实施例的基础上,继续参考附图7所示,在处理模块3对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵时,该处理模块3用于执行:
对概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;计算处理后的概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;根据过渡矩阵和相似度矩阵获得中间结果矩阵。
其中,在处理模块3根据过渡矩阵和相似度矩阵获得中间结果矩阵时,该处理模块3用于执行:对过渡矩阵和相似度矩阵进行多级自适应分片迭代处理;计算处理后的过渡矩阵与相似度矩阵的乘积,获得中间结果矩阵。
在上述实施例的基础上,继续参考附图7所示,在确定模块5根据最终结果矩阵获得节点之间的相似度时,该确定模块5用于执行:
将最终结果矩阵的对角线置为1;对最终结果矩阵中的相似对中节点进行反序列化处理,获得节点之间的相似度。
进一步的,本实施例中的获取模块1还用于在获得中间结果矩阵之前,获取对概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理的迭代次数;
此时,装置还包括:判断模块6,用于执行:若迭代次数大于或等于预设的次数阈值,则停止对概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理;或者,若迭代次数小于预设的次数阈值,则继续对概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理。
本实施例提供的基于Spark的节点相似度计算装置能够用于执行图1-图6实施例所对应的方法,其具体执行方式和有益效果类似,在这里不再赘述。
图8为本发明实施例提供的一种基于Spark的节点相似度计算终端的结构示意图,参考附图8所示,本实施例提供了一种基于Spark的节点相似度计算终端,包括:
存储器302;
处理器301;以及
计算机程序;
其中,计算机程序存储在存储器302中,并被配置为由处理器301执行以实现如上述任意一个实施例中的一种基于Spark的节点相似度计算方法。
本实施例的又一方面提供了一种计算机可读存储介质,其上存储有计算机程序;
计算机程序被处理器执行以实现如上述任意一个实施例中的一种基于Spark的节点相似度计算方法。
最后需要说明的是,本领域普通技术人员可以理解上述实施例方法中的全部或者部分流程,是可以通过计算机程序来指令相关的硬件完成,所述的程序可存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可以为磁盘、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
本发明实施例中的各个功能单元可以集成在一个处理模块中,也可以是各个单元单独的物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。上述提到的存储介质可以是只读存储器、磁盘或光盘等。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种基于Spark的节点相似度计算方法,其特征在于,包括:
获取待处理的二部图中的节点数据,对所述节点数据进行序列化处理;
根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;
对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;
将所述中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;
根据所述最终结果矩阵获得节点之间的相似度。
2.根据权利要求1所述的方法,其特征在于,对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵,包括:
对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;
计算处理后的所述概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;
根据所述过渡矩阵和相似度矩阵获得中间结果矩阵。
3.根据权利要求2所述的方法,其特征在于,根据所述过渡矩阵和相似度矩阵获得中间结果矩阵,包括:
对所述过渡矩阵和相似度矩阵进行多级自适应分片迭代处理;
计算处理后的所述过渡矩阵与相似度矩阵的乘积,获得中间结果矩阵。
4.根据权利要求1所述的方法,其特征在于,根据所述最终结果矩阵获得节点之间的相似度,包括:
将所述最终结果矩阵的对角线置为1;
对所述最终结果矩阵中的相似对中节点进行反序列化处理,获得节点之间的相似度。
5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述多级自适应分片迭代处理,包括:
将矩阵按照预设的矩阵行和/或矩阵列进行迭代切割处理,获得多个矩阵分片。
6.根据权利要求1-4中任意一项所述的方法,其特征在于,在获得中间结果矩阵之前,所述方法还包括:
获取对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理的迭代次数;
若所述迭代次数大于或等于预设的次数阈值,则停止对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理;或者,
若所述迭代次数小于预设的次数阈值,则继续对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理。
7.一种基于Spark的节点相似度计算装置,其特征在于,包括:
获取模块,用于获取待处理的二部图中的节点数据,并对所述节点数据进行序列化处理;
生成模块,用于根据处理后的所述节点数据生成概率转移矩阵和相似度矩阵;
处理模块,用于对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理,获得中间结果矩阵;
运算模块,用于将所述中间结果矩阵与预先设置的衰减系数做乘积运算,获得最终结果矩阵;
确定模块,用于根据所述最终结果矩阵获得节点之间的相似度。
8.根据权利要求7所述的装置,其特征在于,所述处理模块,用于:
对所述概率转移矩阵和相似度矩阵进行多级自适应分片迭代处理;
计算处理后的所述概率转移矩阵的转置与相似度矩阵的乘积,获得过渡矩阵;
根据所述过渡矩阵和相似度矩阵获得中间结果矩阵。
9.根据权利要求8所述的装置,其特征在于,所述处理模块,用于:
对所述过渡矩阵和相似度矩阵进行多级自适应分片迭代处理;
计算处理后的所述过渡矩阵与相似度矩阵的乘积,获得中间结果矩阵。
10.根据权利要求7所述的装置,其特征在于,所述确定模块,用于:
将所述最终结果矩阵的对角线置为1;
对所述最终结果矩阵中的相似对中节点进行反序列化处理,获得节点之间的相似度。
11.根据权利要求7-10中任意一项所述的装置,其特征在于,所述处理模块,用于:
将矩阵按照预设的矩阵行和/或矩阵列进行迭代切割处理,获得多个矩阵分片。
12.根据权利要求7-10中任意一项所述的装置,其特征在于,
所述获取模块,还用于在获得中间结果矩阵之前,获取对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理的迭代次数;
所述装置还包括:判断模块,用于:
若所述迭代次数大于或等于预设的次数阈值,则停止对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理;或者,
若所述迭代次数小于预设的次数阈值,则继续对所述概率转移矩阵和相似度矩阵进行多级迭代自适应分片处理。
13.一种基于Spark的节点相似度计算终端,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-6中任意一项所述的一种基于Spark的节点相似度计算方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序;
所述计算机程序被处理器执行以实现如权利要求1-6中任意一项所述的一种基于Spark的节点相似度计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810811936.0A CN110751161B (zh) | 2018-07-23 | 2018-07-23 | 基于Spark的节点相似度计算方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810811936.0A CN110751161B (zh) | 2018-07-23 | 2018-07-23 | 基于Spark的节点相似度计算方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110751161A true CN110751161A (zh) | 2020-02-04 |
CN110751161B CN110751161B (zh) | 2023-08-22 |
Family
ID=69275010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810811936.0A Active CN110751161B (zh) | 2018-07-23 | 2018-07-23 | 基于Spark的节点相似度计算方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110751161B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022141655A1 (zh) * | 2020-12-30 | 2022-07-07 | 深圳计算科学研究院 | 一种分布式计算SimRank单源节点相似度的方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150142807A1 (en) * | 2013-11-15 | 2015-05-21 | Saffron Technology, Inc. | Methods, systems and computer program products for using a distributed associative memory base to determine data correlations and convergence therein |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
CN105631021A (zh) * | 2015-12-29 | 2016-06-01 | 武汉理工大学 | Hadoop环境中基于PageRank的网络论坛中意见领袖识别优化方法 |
CN105809478A (zh) * | 2016-03-07 | 2016-07-27 | 合网络技术(北京)有限公司 | 一种广告标签的标注方法及系统 |
CN105989154A (zh) * | 2015-03-03 | 2016-10-05 | 华为技术有限公司 | 相似性度量的方法及设备 |
CN106126828A (zh) * | 2016-06-28 | 2016-11-16 | 北京大学 | 一种基于单向游走的高可扩展性SimRank计算方法 |
CN106502964A (zh) * | 2016-12-06 | 2017-03-15 | 中国矿业大学 | 一种基于Spark的极限学习机并行化计算方法 |
CN106991614A (zh) * | 2017-03-02 | 2017-07-28 | 南京信息工程大学 | Spark下基于标签传播的并行重叠社区发现方法 |
CN107833142A (zh) * | 2017-11-08 | 2018-03-23 | 广西师范大学 | 学术社交网络科研合作者推荐方法 |
-
2018
- 2018-07-23 CN CN201810811936.0A patent/CN110751161B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150142807A1 (en) * | 2013-11-15 | 2015-05-21 | Saffron Technology, Inc. | Methods, systems and computer program products for using a distributed associative memory base to determine data correlations and convergence therein |
CN105849749A (zh) * | 2013-11-15 | 2016-08-10 | 英特尔公司 | 使用分布式关联记忆库确定数据相关及其中的收敛的方法、系统和计算机程序产品 |
CN105989154A (zh) * | 2015-03-03 | 2016-10-05 | 华为技术有限公司 | 相似性度量的方法及设备 |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
CN105631021A (zh) * | 2015-12-29 | 2016-06-01 | 武汉理工大学 | Hadoop环境中基于PageRank的网络论坛中意见领袖识别优化方法 |
CN105809478A (zh) * | 2016-03-07 | 2016-07-27 | 合网络技术(北京)有限公司 | 一种广告标签的标注方法及系统 |
CN106126828A (zh) * | 2016-06-28 | 2016-11-16 | 北京大学 | 一种基于单向游走的高可扩展性SimRank计算方法 |
CN106502964A (zh) * | 2016-12-06 | 2017-03-15 | 中国矿业大学 | 一种基于Spark的极限学习机并行化计算方法 |
CN106991614A (zh) * | 2017-03-02 | 2017-07-28 | 南京信息工程大学 | Spark下基于标签传播的并行重叠社区发现方法 |
CN107833142A (zh) * | 2017-11-08 | 2018-03-23 | 广西师范大学 | 学术社交网络科研合作者推荐方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022141655A1 (zh) * | 2020-12-30 | 2022-07-07 | 深圳计算科学研究院 | 一种分布式计算SimRank单源节点相似度的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110751161B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10936765B2 (en) | Graph centrality calculation method and apparatus, and storage medium | |
US11062226B2 (en) | Determining a likelihood of a user interaction with a content element | |
US10185752B2 (en) | Mining association rules in the map-reduce framework | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
US20160378809A1 (en) | Massive time series correlation similarity computation | |
US20140118355A1 (en) | Systems and Methods for Generating A Dense Graph | |
US10642912B2 (en) | Control of document similarity determinations by respective nodes of a plurality of computing devices | |
CN112085172A (zh) | 图神经网络的训练方法及装置 | |
CN105302807B (zh) | 一种获取信息类别的方法和装置 | |
CN104424254A (zh) | 获取相似对象集合、提供相似对象信息的方法及装置 | |
US20110055243A1 (en) | System and method for finding top n pairs in a map-reduce setup | |
Hussain et al. | Novel Dynamic Partial Reconfiguration Implementation of K‐Means Clustering on FPGAs: Comparative Results with GPPs and GPUs | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
CN110751161B (zh) | 基于Spark的节点相似度计算方法、装置及终端 | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
CN115687810A (zh) | 网页搜索方法、装置及相关设备 | |
US11361003B2 (en) | Data clustering and visualization with determined group number | |
CN105554069A (zh) | 一种大数据处理分布式缓存系统及其方法 | |
Gardner et al. | Analyzing response time in the redundancy-d system | |
CN116089367A (zh) | 动态分桶方法、装置、电子设备和介质 | |
US20210026889A1 (en) | Accelerated large-scale similarity calculation | |
Rajamanickam et al. | An Evaluation of the Zoltan Parallel Graph and Hypergraph Partitioners. | |
CN115391551A (zh) | 事件检测方法及装置 | |
CN105205058A (zh) | 数据处理系统和方法 | |
KR20190060600A (ko) | 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200420 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Alibaba (China) Co.,Ltd. Address before: Unit 01, 13 Floors, B Tower, Pingyun Plaza, 163 Xiping Yun Road, Huangpu Avenue, Tianhe District, Guangzhou City, Guangdong Province Applicant before: UC MOBILE (CHINA) Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |