CN109635191B - 相似度确定方法、装置、存储介质和计算机设备 - Google Patents
相似度确定方法、装置、存储介质和计算机设备 Download PDFInfo
- Publication number
- CN109635191B CN109635191B CN201811481198.4A CN201811481198A CN109635191B CN 109635191 B CN109635191 B CN 109635191B CN 201811481198 A CN201811481198 A CN 201811481198A CN 109635191 B CN109635191 B CN 109635191B
- Authority
- CN
- China
- Prior art keywords
- scoring matrix
- processes
- submatrices
- similarity
- similarity calculation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 181
- 239000011159 matrix material Substances 0.000 claims abstract description 176
- 230000008569 process Effects 0.000 claims abstract description 161
- 238000004364 calculation method Methods 0.000 claims abstract description 92
- 238000004891 communication Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 5
- 230000006399 behavior Effects 0.000 description 26
- 230000015654 memory Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000013598 vector Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 241000283965 Ochotona princeps Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种相似度确定方法、装置、存储介质和计算机设备,所述的方法根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵;将第一评分矩阵和第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;由N个进程并行进行相似度计算;相似度计算完成后,分别将N个进程中第二评分矩阵的子矩阵发送到各自进程的下一个进程中;将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,由N个进程重新并行进行相似度计算,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。本申请实施例提升了相似度计算速度。
Description
技术领域
本申请涉及信息处理技术领域,具体而言,本申请涉及一种相似度确定方法、装置、存储介质和计算机设备。
背景技术
相似度计算是传统基于协同过滤等推荐算法的核心问题,基于相似的用户/物品/特征推荐用户感兴趣的内容。相似度一般包括:用户与用户之间的相似度,物品与物品之间的相似度,用户与物品的相关性等。计算相似度的方法也有多种。例如,通过cosine(余弦)计算相似度,即将用户对物品的行为转化为用户-物品偏好的二维评分矩阵,那么就可以把矩阵的行/列看作一个稀疏向量,通过稀疏向量间的cosine来计算相似度,夹角越小相似程度越高。随着近年来各种embedding model(嵌入模型)的提出,也可以对用户/物品进行embedding,用稠密向量来表征用户/物品,稠密向量间也可以计算相似度。更一般的数学抽象,相似度可以根据下述公式进行计算:
其中,A和B可以是稀疏矩阵或稠密矩阵。
但是该相似度计算公式为大型矩阵计算,用户/物品的量级百万起,计算复杂度约为O(|I|*|U|*|I|),可达10亿次,属于计算密集型。
对于这样的问题,工业界基于MapReduce范式给出对应的解决方案。该方案的核心是Interaction(交互),对每个User(用户)计算Item(物品)共现,复杂度为O(I2)。该种方案存在的问题是:由于调度/资源/通信等问题随着数据量的增加,计算规模灾难性增长,但是该方案计算速度较慢,因此性能往往成为瓶颈。
发明内容
本申请针对现有方式的缺点,提出一种相似度确定方法、装置、存储介质和计算机设备,以提升相似度计算速度。
本申请的实施例根据第一个方面,提供了一种相似度确定方法,包括:
根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵;
将所述第一评分矩阵和所述第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;N大于1;
由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算;
相似度计算完成后,分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中;
将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,返回由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算的步骤,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。
在一个实施例中,所述分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中,包括:
分别将N个进程中所述第二评分矩阵的子矩阵序列化后发送到各自进程的下一个进程中。
在一个实施例中,所述将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,包括:
将N个进程接收到的子矩阵分别进行反序列化;
将N个进程中所述第二评分矩阵的子矩阵分别更新为反序列化后的子矩阵。
在一个实施例中,所述直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算,之后,还包括:
将相似度计算的结果保存到应用程序进程有权限访问的介质中。
在一个实施例中,所述将相似度计算的结果保存到应用程序进程有权限访问的介质中,之后,还包括:
接收到应用程序进程对所述介质的访问指令时,根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户。
在一个实施例中,所述相似度计算的结果包括用户与用户之间的相似度;
所述根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户,包括:
根据用户与用户之间的相似度,确定所述目标用户的相似用户;
获取所述相似用户感兴趣的物品并推荐给所述目标用户。
在一个实施例中,所述用户、物品以及用户对物品的行为数据存储在离线数据库中;
所述确定待推荐的物品并推荐给所述目标用户,之后,还包括:
将所述目标用户对所述待推荐的物品的行为数据存储到所述离线数据库中。
本申请的实施例根据第二个方面,还提供了一种相似度确定装置,包括:
评分矩阵生成模块,用于根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵;
子矩阵生成模块,用于将所述第一评分矩阵和所述第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;N大于1;
相似度计算模块,用于由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算;
子矩阵通信模块,用于相似度计算完成后,分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中;
子矩阵更新模块,用于将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,进入所述相似度计算模块执行由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算的功能,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。
本申请的实施例根据第三个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的相似度确定方法。
本申请的实施例根据第四个方面,还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的相似度确定方法。
上述的相似度确定方法、装置、存储介质和计算机设备,通过N个进程对各个子矩阵进行相似度并行计算,第二评分矩阵的子矩阵在进程间环形通信,保证第一评分矩阵的每个子矩阵与第二评分矩阵的所有子矩阵都进行过一次相似度计算,相较于传统MapReduce方案所存在的数据分布不均衡且计算速度较慢的缺陷,本申请确保了数据均衡,使资源占用大致等同,且利用并行计算和环形通信大大提升了相似度的计算速度。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请一个实施例的相似度确定方法的示意图;
图2为本申请一个具体实施例的相似度确定方法的示意图;
图3为本申请一个实施例的相似度确定方法中数据的流向示意图;
图4为MapReduce方案、单机方案和本申请方案的耗时对比的示意图,以及加速比的示意图;
图5为本申请一个实施例的相似度确定装置的示意图;
图6为本申请一个实施例的计算机设备的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
有必要先对本申请的技术构思和应用场景进行如下的先导性说明。
本申请提供一种基于MPI与openMP实现的相似性计算工具。MPI为一个跨语言的通讯协议,用于编写并行计算机,MPI的优势为:MPI为消息传递和并行变成工具,功能强大、效率高,针对计算型任务,自主控制底层数据结构,机器间的通信等,资源可控,同时计算,同时数据交换,避免过多的等待开销和资源倾斜。openMP用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案。本申请充分发挥MPI+openMP多机多核的优势,可扩展性强,同时利用语言本身的特性大幅提升相似度的计算速度。
本申请提供的相似度确定方法可以应用在各个产品的推荐算法侧,其中,推荐算法包括协同过滤等等,例如,将本申请提供的相似度确定方法应用在LIKE产品的推荐算法侧,当用户访问LIKE时,就会快速计算出该用户感兴趣的直播视频内容并推荐给用户。
下面结合附图,对本申请的具体实施方式进行详细介绍。
如图1所示,在一个实施例中,一种相似度确定方法,包括:
S110、根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵。
物品可以是任何需要推荐的种类,例如物品为直播视频、商品等等。用户对物品的行为数据包括用户对物品产生行为所生成的各个数据,以物品为直播视频为例,用户对直播视频的行为数据包括点赞、分享、评论等等行为数据。可选的,所述用户、物品以及用户对物品的行为数据可以存储在离线数据库中,从而不受网络性能影响。在计算相似度时,可以从相应的离线数据库分别获得用户、物品以及用户对物品的行为等相关的数据。
用户对物品的评分矩阵为用户-物品偏好的评分矩阵。评分矩阵的行的属性为用户或者物品,评分矩阵的列的属性为物品或者用户,评分矩阵的值为用户对物品的评分,其中,根据行为数据得到评分可以根据现有技术中已有的方式实现。
可选的,可以对获取的用户、物品以及用户对物品的行为数据进行数据清洗、采样等处理,最后产出符合要求的评分矩阵的数据格式。产出的评分矩阵的数据格式可以是稀疏矩阵或者稠密矩阵。在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。另外,生成的第一评分矩阵和第二评分矩阵可以是相同的矩阵,也可以为不同的矩阵。
S120、将所述第一评分矩阵和所述第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;N大于1。
为了提高计算的速度,需要将第一评分矩阵和第二评分矩阵划分为多个子矩阵,并分配到N个进程中进行相似度计算。该步骤S120实现的方式有很多种。例如,可以先将第一评分矩阵划分为N个子矩阵,将第二评分矩阵划分为N个子矩阵,然后将第一评分矩阵的N个子矩阵一一分配到N个进程中,将第二评分矩阵的N个子矩阵按照对应的顺序一一分配到N个进程中。又例如,从第一评分矩阵中选取第一份子矩阵的数据,从第二评分矩阵中对应位置选取第一份子矩阵的数据,将这两份数据分配到第一个进程中,接着从第一评分矩阵中选取第二份子矩阵的数据,从第二评分矩阵中对应位置选取第二份子矩阵的数据,将两份数据分配到第二个进程中,……,依次循环,将第一评分矩阵和第二评分矩阵循环切块成N份,分别分配到N个进程中。
S130、由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算。
通过上述分配,每一个进程中均包含第一评分矩阵的子矩阵Ai和第二评分矩阵的子矩阵Bi,每个进程并行对两个子矩阵进行相似度计算,得到本轮的相似度计算结果。
S140、相似度计算完成后,分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中。
对各个进程进行排序,各自进程的下一个进程指的是按照排序顺序本进程的下一个进程,如果本进程已经是最后一个进程,则本进程的下一个进程指的是第一个进程。例如,分配时定义:子矩阵A1和子矩阵B1分配的进程为进程1,子矩阵A2和子矩阵B2分配的进程为进程2,……,子矩阵AN和子矩阵BN分配的进程为进程N,则进程i的下一个进程指的是进程i+1,如果i=N,则进程N的下一个进程指的是进程1。
本轮的相似度计算完成后,将Bi通信到下一个进程中,Bi在进程间环形通信。例如,第一次Ai与Bi在进程i中进行相似度计算,之后Bi通信到i+1的进程中。
S150、将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,返回由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算的步骤,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。
如果N个进程中第一评分矩阵的子矩阵没有与所述第二评分矩阵的所有子矩阵均完成相似度计算,N个进程将原本包含的第一评分矩阵的子矩阵和接收到的第二评分矩阵的子矩阵并行进行相似度计算,然后再将Bi通信到下一个进程中,依次循环,最终Ai与所有Bi都进行过一次相似度计算,结束循环,此时得到所有的相似度计算结果。
本申请计算出的相似度计算结果包括用户与用户之间的相似度,物品与物品之间的相似度等等,具体为哪种类型的相似度由评分矩阵的行的属性确定。例如,第一评分矩阵和第二评分矩阵的矩阵行的属性均是用户,列的属性均是物品,评分矩阵的值是用户对物品的评分,则相似度计算结果是用户和用户之间的相似度,即行的属性之间的相似度。
上述相似度确定方法,在Ai和Bi子矩阵计算中,通过openMP多进程加速,Bi在进程间环形通信,相较于传统技术中的相似度计算方法,大幅提升了计算效率。
为了更好的理解上述相似度计算的过程,下面结合一个具体例子进行说明。
如图2所示,为一具体实施例的相似度确定方法的示意图。从图2可以看出,第一评分矩阵A被划分为两个子矩阵A1和A2,第二评分矩阵B被划分为两个子矩阵B1和B2,A1和B1被分配到进程0,A2和B2被分配到进程1,在第一次相似度计算时,如图2上部分所示,进程0中计算A1*B1,得到S11,进程1中计算A2*B2,得到S22,之后,如图2下部分所示,B1被通信到进程1中,B2被通信到进程0中,在第二次相似度计算时,进程0中计算A1*B2,得到S12,进程1中计算A2*B1,得到S21,S12和S11组合成S1,S22和S21组合成S2,至此获得所有相似度计算结果。
现有技术中MapReduce方案还存在网络通信耗时长、速度慢的缺陷,本申请为了提高通信效率,在一个实施例中,所述分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中,包括:分别将N个进程中所述第二评分矩阵的子矩阵序列化后发送到各自进程的下一个进程中。每次相似度计算之后有一个环形通信环节,网络通信有通信成本,通过将第二评分矩阵的子矩阵进行序列化后传输可以减少通信成本,提高通信效率。可选的,可以通过boost srialization进行序列化,boost为C++语言的标准库,boostSrialization进行序列化支持STL(Standard Template Library,标准模板库)中的容器,通信效率高,开发成本低。
在一个实施例中,所述将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,包括:将N个进程接收到的子矩阵分别进行反序列化;将N个进程中所述第二评分矩阵的子矩阵分别更新为反序列化后的子矩阵。进行一次通信操作后,需要对通信的子矩阵进行反序列化,然后根据反序列化后的子矩阵和进程中包含的第一评分矩阵的子矩阵再进行相似度计算。可选的,boost会对STL容器结构进行重构,然后再进行子矩阵之间的相似度计算,依次往复,加快效率,节约成本。
在一个实施例中,所述直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算,之后,还包括:将相似度计算的结果保存到应用程序进程有权限访问的介质中。得到相似度计算结果后,将相似度计算结果数据保存到APP(Application,应用程序)相关进程能访问的介质中,如redis/pika/机器内存等。
在一个实施例中,所述将相似度计算的结果保存到应用程序进程有权限访问的介质中,之后,还包括:接收到应用程序进程对所述介质的访问指令时,根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户。应用程序的相关进程访问介质数据时,通过本申请提供的方案可以实时产生优质推荐物品给访问用户。
在一个实施例中,所述相似度计算的结果包括用户与用户之间的相似度;所述根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户,包括:根据用户与用户之间的相似度,确定所述目标用户的相似用户;获取所述相似用户感兴趣的物品并推荐给所述目标用户。
以结果是用户与用户的相似度为例,根据介质中存储的用户与用户之间的相似度,确定出访问用户A有相似用户B1-BN,获取B1-BN曾感兴趣的物品,推荐给访问用户A。
在一个实施例中,所述确定待推荐的物品并推荐给所述目标用户,之后,还包括:将所述目标用户对所述待推荐的物品的行为数据存储到所述离线数据库中。用户对待推荐的物品的行为产生行为数据,可以通过kafka等导入到离线数据库中,用于下次相似度的计算。
如图3所示,为一实施例的相似度确定方法中数据的流向示意图。从图3可以看出,在进行相似度计算时,先从离线数据库中获取相关数据存储在HDFS(Hadoop DistributedFile System,Hadoop分布式文件系统)中,通过本申请提供的相似度计算工具对HDFS存储的数据进行计算,并将相似度计算结果存储到应用程序进程能够访问的介质中,应用程序进程访问介质数据,实时产生优质推荐物品给访问用户,访问用户对推荐物品的实时行为产生用户行为数据,将该用户行为数据存储在离线数据库中,用于下次相似度的计算。
为了更好的理解本申请的技术效果,以某次实际计算数据为例,输入约36.5w(万)行,每行50维稠密向量,计算top50相似度,如图4所示,为MapReduce方案、单机方案和MPI方案(本申请方案)的耗时对比的示意图,以及加速比的示意图。从耗时对比可以看出,MapReduce方案(MR)耗时为72分钟,约1.5小时,单机耗时为196分钟,MPI版本20worker*8thread需要8分钟,不到10分钟,大大提高了计算速度。从加速比也可以看出,本申请采用MPI版本消耗时间更低。
基于同一发明构思,本申请还提供一种相似度确定装置,下面结合附图对本申请装置的具体实施方式进行详细描述。
如图5所示,在一个实施例中,一种相似度确定装置,包括:
评分矩阵生成模块210,用于根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵;
子矩阵生成模块220,用于将所述第一评分矩阵和所述第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;N大于1;
相似度计算模块230,用于由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算;
子矩阵通信模块240,用于相似度计算完成后,分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中;
子矩阵更新模块250,用于将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,进入所述相似度计算模块230执行由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算的功能,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。
在一个实施例中,子矩阵通信模块240分别将N个进程中所述第二评分矩阵的子矩阵序列化后发送到各自进程的下一个进程中。
在一个实施例中,子矩阵更新模块250将N个进程接收到的子矩阵分别进行反序列化;将N个进程中所述第二评分矩阵的子矩阵分别更新为反序列化后的子矩阵。
在一个实施例中,本申请装置还包括与子矩阵更新模块250相连的结果存储模块,用于将相似度计算的结果保存到应用程序进程有权限访问的介质中。
在一个实施例中,本申请装置还包括与结果存储模块相连的推荐模块,用于接收到应用程序进程对所述介质的访问指令时,根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户。
在一个实施例中,所述相似度计算的结果包括用户与用户之间的相似度;推荐模块根据用户与用户之间的相似度,确定所述目标用户的相似用户;获取所述相似用户感兴趣的物品并推荐给所述目标用户。
在一个实施例中,所述用户、物品以及用户对物品的行为数据存储在离线数据库中;本申请装置还包括与所述推荐模块相连的行为数据存储模块,用于将所述目标用户对所述待推荐的物品的行为数据存储到所述离线数据库中。
上述相似度确定装置的其它技术特征与上述相似度确定方法的技术特征相同,在此不予赘述。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的相似度确定方法。其中,所述存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSable ProgrammableRead-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSableProgrammable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。可以是只读存储器,磁盘或光盘等。
本申请实施例还提供一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的相似度确定方法。
图6为本申请计算机设备的结构示意图,包括处理器320、存储装置330、输入单元340以及显示单元350等器件。本领域技术人员可以理解,图6示出的结构器件并不构成对所有计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储装置330可用于存储应用程序310以及各功能模块,处理器320运行存储在存储装置330的应用程序310,从而执行设备的各种功能应用以及数据处理。存储装置330可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本申请所公开的存储装置包括但不限于这些类型的存储装置。本申请所公开的存储装置330只作为例子而非作为限定。
输入单元340用于接收信号的输入,以及接收用户、物品以及用户对物品的行为数据。输入单元340可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元350可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元350可采用液晶显示器、有机发光二极管等形式。处理器320是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储装置330内的软件程序和/或模块,以及调用存储在存储装置内的数据,执行各种功能和处理数据。
在一实施方式中,计算机设备包括一个或多个处理器320,以及一个或多个存储装置330,一个或多个应用程序310,其中所述一个或多个应用程序310被存储在存储装置330中并被配置为由所述一个或多个处理器320执行,所述一个或多个应用程序310配置用于执行以上实施例所述的相似度确定方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解的是,在本申请各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种相似度确定方法,其特征在于,包括:
根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵;
将所述第一评分矩阵和所述第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;N大于1;
由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算;
相似度计算完成后,分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中;
将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,返回由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算的步骤,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。
2.根据权利要求1所述的相似度确定方法,其特征在于,所述分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中,包括:
分别将N个进程中所述第二评分矩阵的子矩阵序列化后发送到各自进程的下一个进程中。
3.根据权利要求2所述的相似度确定方法,其特征在于,所述将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,包括:
将N个进程接收到的子矩阵分别进行反序列化;
将N个进程中所述第二评分矩阵的子矩阵分别更新为反序列化后的子矩阵。
4.根据权利要求1至3任意一项所述的相似度确定方法,其特征在于,所述直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算,之后,还包括:
将相似度计算的结果保存到应用程序进程有权限访问的介质中。
5.根据权利要求4所述的相似度确定方法,其特征在于,所述将相似度计算的结果保存到应用程序进程有权限访问的介质中,之后,还包括:
接收到应用程序进程对所述介质的访问指令时,根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户。
6.根据权利要求5所述的相似度确定方法,其特征在于,所述相似度计算的结果包括用户与用户之间的相似度;
所述根据所述介质保存的相似度计算的结果以及所述应用程序进程对应的目标用户的标识,确定待推荐的物品并推荐给所述目标用户,包括:
根据用户与用户之间的相似度,确定所述目标用户的相似用户;
获取所述相似用户感兴趣的物品并推荐给所述目标用户。
7.根据权利要求5所述的相似度确定方法,其特征在于,所述用户、物品以及用户对物品的行为数据存储在离线数据库中;
所述确定待推荐的物品并推荐给所述目标用户,之后,还包括:
将所述目标用户对所述待推荐的物品的行为数据存储到所述离线数据库中。
8.一种相似度确定装置,其特征在于,包括:
评分矩阵生成模块,用于根据输入的用户、物品以及用户对物品的行为数据,生成用户对物品的第一评分矩阵和第二评分矩阵;
子矩阵生成模块,用于将所述第一评分矩阵和所述第二评分矩阵分别划分为N个子矩阵,并分别分配到N个进程中;N大于1;
相似度计算模块,用于由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算;
子矩阵通信模块,用于相似度计算完成后,分别将N个进程中所述第二评分矩阵的子矩阵发送到各自进程的下一个进程中;
子矩阵更新模块,用于将N个进程中所述第二评分矩阵的子矩阵分别更新为接收到的子矩阵,进入所述相似度计算模块执行由N个进程分别对其包含的所述第一评分矩阵的子矩阵和所述第二评分矩阵的子矩阵进行相似度计算的功能,直至N个进程中所述第一评分矩阵的子矩阵与所述第二评分矩阵的所有子矩阵均完成相似度计算。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任意一项所述的相似度确定方法。
10.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任意一项所述的相似度确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481198.4A CN109635191B (zh) | 2018-12-05 | 2018-12-05 | 相似度确定方法、装置、存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481198.4A CN109635191B (zh) | 2018-12-05 | 2018-12-05 | 相似度确定方法、装置、存储介质和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109635191A CN109635191A (zh) | 2019-04-16 |
CN109635191B true CN109635191B (zh) | 2023-02-03 |
Family
ID=66071237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811481198.4A Active CN109635191B (zh) | 2018-12-05 | 2018-12-05 | 相似度确定方法、装置、存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109635191B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231453B (zh) * | 2020-10-13 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 一种智能问答方法、装置、计算机设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8676736B2 (en) * | 2010-07-30 | 2014-03-18 | Gravity Research And Development Kft. | Recommender systems and methods using modified alternating least squares algorithm |
CN103049486B (zh) * | 2012-12-05 | 2015-10-07 | 北京奇虎科技有限公司 | 一种协同过滤距离的处理方法和系统 |
CN103336831B (zh) * | 2013-07-09 | 2017-04-12 | 清华大学 | 基于块对角矩阵的推荐方法和装置 |
CN104461467B (zh) * | 2013-09-25 | 2018-05-04 | 广州中国科学院软件应用技术研究所 | 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法 |
CN107180063A (zh) * | 2016-03-09 | 2017-09-19 | 山东商务职业学院 | 一种hadoop实现的ItemCF推荐方法 |
CN107220303A (zh) * | 2017-05-10 | 2017-09-29 | 努比亚技术有限公司 | 一种应用的推荐方法、装置及计算机可读介质 |
-
2018
- 2018-12-05 CN CN201811481198.4A patent/CN109635191B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109635191A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tang et al. | A survey on spark ecosystem: Big data processing infrastructure, machine learning, and applications | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
Gunarathne et al. | Scalable parallel computing on clouds using Twister4Azure iterative MapReduce | |
Zhang et al. | Enabling in-situ execution of coupled scientific workflow on multi-core platform | |
Schelter et al. | Distributed matrix factorization with mapreduce using a series of broadcast-joins | |
US20140095526A1 (en) | Random Number Generator In A MPP Database | |
Sardar et al. | Partition based clustering of large datasets using MapReduce framework: An analysis of recent themes and directions | |
Ward et al. | Colmena: Scalable machine-learning-based steering of ensemble simulations for high performance computing | |
Gu et al. | Improving execution concurrency of large-scale matrix multiplication on distributed data-parallel platforms | |
CN108763851A (zh) | 一种多分子同时实现对接的方法 | |
Dorronsoro et al. | Combining machine learning and genetic algorithms to solve the independent tasks scheduling problem | |
Shterenlikht et al. | Fortran 2008 coarrays | |
LaSalle et al. | Mpi for big data: New tricks for an old dog | |
Teijeiro et al. | Towards cloud-based parallel metaheuristics: a case study in computational biology with differential evolution and spark | |
Hadjidoukas et al. | torcpy: Supporting task parallelism in Python | |
CN109635191B (zh) | 相似度确定方法、装置、存储介质和计算机设备 | |
Nigro et al. | Parallel random swap: An efficient and reliable clustering algorithm in Java | |
US11599540B2 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
Dongarra et al. | Parallel Processing and Applied Mathematics | |
US9354909B2 (en) | Processing systems and methods | |
Rossant et al. | Playdoh: a lightweight Python library for distributed computing and optimisation | |
Wu et al. | Paraopt: Automated application parameterization and optimization for the cloud | |
Melab et al. | Graphics processing unit‐accelerated bounding for branch‐and‐bound applied to a permutation problem using data access optimization | |
West et al. | A hybrid approach to processing big data graphs on memory-restricted systems | |
Karatzas et al. | OmniBoost: Boosting Throughput of Heterogeneous Embedded Devices under Multi-DNN Workload |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230926 Address after: 31a, 15 / F, building 30, maple mall, bangrang Road, Brazil, Singapore Patentee after: Baiguoyuan Technology (Singapore) Co.,Ltd. Address before: Building B-1, North District, Wanda Commercial Plaza, Wanbo business district, No. 79, Wanbo 2nd Road, Nancun Town, Panyu District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU BAIGUOYUAN INFORMATION TECHNOLOGY Co.,Ltd. |