CN103049486A - 一种协同过滤距离的处理方法和系统 - Google Patents

一种协同过滤距离的处理方法和系统 Download PDF

Info

Publication number
CN103049486A
CN103049486A CN2012105176171A CN201210517617A CN103049486A CN 103049486 A CN103049486 A CN 103049486A CN 2012105176171 A CN2012105176171 A CN 2012105176171A CN 201210517617 A CN201210517617 A CN 201210517617A CN 103049486 A CN103049486 A CN 103049486A
Authority
CN
China
Prior art keywords
calculation
server
current
servers
computing
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
Application number
CN2012105176171A
Other languages
English (en)
Other versions
CN103049486B (zh
Inventor
齐路
何锐邦
唐会军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201210517617.1A priority Critical patent/CN103049486B/zh
Publication of CN103049486A publication Critical patent/CN103049486A/zh
Application granted granted Critical
Publication of CN103049486B publication Critical patent/CN103049486B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了本发明一种协同过滤距离的处理方法和系统,涉及计算机技术领域。所述方法包括:针对至少两个计算服务器,每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;每个参与计算计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵。本发明解决了只能由单计算服务器计算获得协同过滤距离矩阵的问题,取得了在互联网环境下,可以提高针对海量数据的协同过滤距离矩阵的计算效率,减少计算时间的有益效果。

Description

一种协同过滤距离的处理方法和系统
技术领域
本发明涉及计算机技术领域,具体涉及一种协同过滤距离的处理方法和系统。
背景技术
互联网上的信息资源呈指数膨胀带来了所谓的“信息过载”和“信息迷向”问题,即人们很难找到自己感兴趣的信息,即使找到了一些,也经常混有很多“噪音”。因此出现了面向互联网的信息检索、信息过滤和协同过滤等技术。但信息检索不具有智能性,不能学习用户的兴趣,尤其是对具有特定专业兴趣的用户,输入相同的关键词只能得到相同的检索结果。信息过滤不能对同一主题的过滤结果区分质量好坏,并且随着信息资源的剧增,更有效的过滤需要结合人们的质量评价信息。基于该种需求,出现了推荐系统,推荐系统是为解决信息过载问题而提出的一种智能代理系统,能从大量信息中向用户自动推荐出符合其兴趣偏好或需求的资源。随着互联网的普及和飞速发展,推荐系统已经被广泛应用于各种领域,尤其在电子商务领域,推荐系统得到了越来越多的研究和应用。目前,几乎所有的大型电子商务网站都不同程度的使用了各种形式的推荐系统,比如Amazon、CDNOW、eBay和当当网上书店等。其中,协同过滤技术在当前推荐系统的应用中获得了较大的成功。
协同过滤是一类推荐算法。协同过滤考虑了用户的评价信息。协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度的预测。主要分为基于用户的协同过滤(User based)和基于商品的(Item based)两种。例如基于用户的协同过滤算法,它的基本思想是:如果要为一个用户推荐其没有的商品,首先计算其它用户和这个用户的喜好的相似程度,然后从与其喜好最相似的若干用户中找到这个用户没有的商品进行推荐。基于商品的协同过滤原理类似。因此算法中非常重要的一步就是计算所有用户间的相似程度(也即协同过滤距离)。
在互联网环境下,用户和商品都是海量数据,同时由于实效性对算法有一定的时间要求,而现有技术中对于协同过滤距离的计算基本上是在一个计算服务器上进行,而当遭遇超大量的用户,比如百万数量级的时候,采用单服务器计算则时效太慢,并且对于硬件的要求比较高。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种协同过滤距离的处理系统和相应的一种协同过滤距离的处理方法。
依据本发明的一个方面,提供了一种协同过滤距离的处理方法,包括:
针对至少两个计算服务器,每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
每个参与计算计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵;所述每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获取协同过滤距离子矩阵具体包括:
针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
可选的,所述针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器包括:
所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器。
可选的,所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器包括:
将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;
如果比较结果符合预设条件,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
如果比较结果不符合预设条件,则结束获得协同过滤距离子矩阵的计算。
可选的,所述将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较之后还包括:
判断计算服务器的总个数N是否为偶数;
如果计算服务器的总个数N为偶数,则判断当前通信轮次p是否为最后一轮通信;
如果当前轮次p是最后一轮通信,则每个参与计算的计算服务器,判断其标识i是否小于N/2;
如果标识i小于N/2,则标识i小于N/2的计算服务器,进入根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
如果标识i不小于N/2,则进入判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2的过程;
如果当前轮次p是最后一轮通信,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
如果计算服务器的总个数N为奇数,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程。
可选的,当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
可选的,还包括:
将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
可选的,所述每个参与计算的计算服务器进行各计算服务器间的循环通信计算包括:
每个参与计算的计算服务器采用讯息传递接口发送函数MPI_send和讯息传递接口接收函数MPI_recv进行各计算服务器间的循环通信计算。
依据本发明的另外一个方面,提供了一种协同过滤距离的处理系统,包括:
N个计算服务器;
所述每个参与计算的计算服务器包括:
数据读取存储模块,适于每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
本地数据计算模块,适于每个参与计算的计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
循环通信计算模块,适于每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵;
所述循环通信计算模块包括:
目的计算服务器确认模块,适于针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
矩阵数据发送接收模块,适于每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
协同计算模块,适于每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
可选的,所述目的计算服务器确认模块包括:
第一目的计算服务器确认模块,适于所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器。
可选的,所述第一目的计算服务器确认模块包括:
停止判断模块,适于将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;
第二目的服务器确认子模块,适于如果判断的比较结果符合预设条件,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
第一停止模块,适于如果判断的比较结果不符合预设条件,则结束获得协同过滤距离子矩阵的计算。
可选的,所述停止判断模块之后还包括:
第二判断模块,适于判断计算服务器的总个数N是否为偶数;
第三判断模块,适于如果计算服务器的总个数N为偶数,则判断当前通信轮次p是否为最后一轮通信;
第四判断模块,适于如果当前轮次p是最后一轮通信,则每个参与计算的计算服务器,判断其标识i是否小于N/2;
第三目的服务器确认子模块,适于如果标识i小于N/2,则标识i小于N/2的计算服务器,进入根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
转入模块,适于如果标识i不小于N/2,则进入判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2的过程;
第三目的服务器确认模块,适于如果计算服务器的总个数N为奇数,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程。
可选的,当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
可选的,还包括:
整理模块,适于将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
可选的,所述矩阵数据发送接收模块包括:
第一矩阵数据发送接收模块,适于每个参与计算的计算服务器采用讯息传递接口发送函数MPI_send和讯息传递接口接收函数MPI_recv进行各计算服务器间的循环通信计算。
根据本发明的一种协同过滤距离的处理方法可以在个计算服务器中同步的计算得到原协同过滤距离矩阵的各协同过滤距离子矩阵,由此解决了只能由单计算服务器计算获得协同过滤距离矩阵的问题,取得了在互联网环境下,可以提高针对海量数据的协同过滤距离矩阵的计算效率,减少计算时间的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种协同过滤距离的处理方法实施例一的流程示意图;
图2示出了根据本发明一个实施例的一种协同过滤距离的处理方法实施例二的流程示意图;
图3中示出了根据本发明一个实施例的4个计算服务器的通信示例;
图4中示出了根据本发明一个实施例的5个计算服务器的通信示例;
图5示出了根据本发明一个实施例的一种协同过滤距离的处理系统实施例一的结构示意图;以及
图6示出了根据本发明一个实施例的一种协同过滤距离的处理系统实施例二的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,其示出了本发明一种协同过滤距离的处理方法实施例一的流程示意图,具体可以包括:
步骤110,针对至少两个计算服务器,每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
为方便描述,在此首先以User base的协同过滤为例,介绍User(用户)对Item(栏目,栏目通常可以包括商品类目等)的协调过滤距离矩阵的原理:
介绍User对Item的协调过滤距离矩阵,即计算User对Item相似矩阵,也即是指根据User对Item的打分矩阵,计算每两个User之间的相似度,进而得到User之间的的相似矩阵(即协调过滤距离矩阵)。因此,要得到最终的相似矩阵,每一行都要与矩阵中其它行进行一次Sim运算(相似度运算)。具体过程,如下所示
Figure BDA00002531286100081
其中 s ij = Sim ( R i → , R j → )
其中,
Figure BDA00002531286100083
中没行为用户m对项目n的打分,sij为用户i和用户j之间的相似度,
Figure BDA00002531286100084
为第i行的行向量,Sim函数可以有多种选择,例如余弦距离,皮尔森(pearson)相关系数,欧几里德距离等。
在大规模并行计算中,数据分布在多台计算服务器上,因此计算过程中要考虑本地数据和外部数据的问题。若数据按照行进行划分,即每个参与计算的计算服务器保存一部分行的数据,则计算服务器和数据的对应关系如下:
Figure BDA00002531286100091
Figure BDA00002531286100092
......
Figure BDA00002531286100093
那么本发明实施例中,对于多个计算服务器,首先会将存储的用户-项目打分矩阵
Figure BDA00002531286100094
分块分配给各计算服务器,在本发明实施例中,一般按行分配。当然如果存储的矩阵为的转置矩阵,那么也可以按列分配。
在为每个参与计算的计算服务器分配好与前述打分矩阵中相应初始读取的矩阵的对应关系后,则开始启动协同过滤距离计算后,每个参与计算的计算服务器读取并存储相应的分块矩阵数据,其中所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据。
其中,本发明实施例中,原始矩阵数据(即整个打分数据)是存储于专用服务器中,那么各计算服务器则从该专用服务器中读取相应的矩阵数据。
在本发明实施例中,为了方便说明,后续均以User base的角度为例,对User对Item的打分矩阵
Figure BDA00002531286100096
为例对相似矩阵(协同过滤距离矩阵)进行说明。对于Item base角度,只需将
Figure BDA00002531286100101
转置即可,原理类似。
在本发明实施例中可能参与并行计算的包括N个计算服务器,N大于等于2。
步骤120,每个参与计算的计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
每个参与计算的计算服务器则计算本地初始读取的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵。比如前述计算服务器0读取的矩阵为
Figure BDA00002531286100102
那么计算服务器0则计算该分块矩阵中每两行之间的相似度(即协同过滤距离),那么即得到
Figure BDA00002531286100103
中的一部分的相似度矩阵,也即本地数据的协同过滤子矩阵。
步骤130,每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵;
在本发明实施例中,为了保证对于使各个计算服务器可以一起计算得到所有的协同过滤子矩阵,即原打分矩阵中每两行均能不漏的计算,以得到完整的相似度的矩阵,那么需要各个计算服务器在计算过程中进行内存通信。每个参与计算的计算服务器在计算完本地存储的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵后,每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵。
在本发明实施例中,本发明各个计算服务器采用MPI(Message PassingInterface,讯息传递接口;一种消息传递编程接口,同时提供了实现其一系列接口的多语言函数库)进行计算服务器间的循环通信。
可选的,所述每个参与计算的计算服务器进行各计算服务器间的循环通信计算包括:
每个参与计算的计算服务器采用讯息传递接口发送函数MPI_send和讯息传递接口接收函数MPI_recv进行各计算服务器间的循环通信计算。
对于MPI_send,其函数大致示例如下:
int MPI_Send(void*buf,int count,MPI_Datatype datatype,int dest,inttag,MPI_Comm comm);
IN buf       发送缓冲区的起始地址
IN count     要发送信息的元素个数
IN datatype  发送信息的数据类型
IN dest      目标进程的rank值
IN tag       消息标签
IN comm      通信子
对于MPI_recv,其函数大致示例如下:
int MPI_Recv(void*buf,int count,MPI_Datatype datatype,int source,inttag,MPI_Comm comm,MPI_Status*status);
OUT buf        接收缓冲区的起始地址
IN count       要接收信息的元素个数
IN datatype    接收信息的数据类型
IN source      源进程的rank值
IN tag         消息标签
IN comm        通信子
OUT status     status对象,包含实际接收到的消息的有关信息
所述每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获取协同过滤距离子矩阵具体包括:
步骤131,针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
各参与计算的计算服务器则需要确认当前服务器的目的服务器,已发送本地的分块矩阵数据给目的服务器。
可选的,本发明实施例中,所述针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器包括:
步骤S131,针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
在本发明实施例中,为了管理每个参与计算的计算服务器,会针对各个计算服务器设置计算服务器的标识,比如数字0、1......等。同时会通知每个参与计算的计算服务器,在整个并行计算网络中计算服务器的总个数N,每个服务器还会记录整个并行计算网络中计算服务器间的整体通信的轮次,那么针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据。
可选的,所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器包括:
步骤S11,将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;
比如当所述轮次从0开始计数时,判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2。
比如当所述轮次从1开始计数时,判断当前各计算服务器间进行循环通信计算的轮次p,是否小于等于计算服务器的总个数N的一半N/2。
在本发明实施例中,为了避免各个计算服务器重复计算,设置了各个计算服务器进行循环通信计算的最高轮次,最优的最高轮次为N/2,即通信轮次最高只能到N/2,当然最高轮次也可以大于N/2。
步骤S12,如果比较结果符合预设条件,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
对于步骤S12,比如当所述轮次从0开始计数时,如果当前计算服务器间进行分块矩阵数据通信的轮次p小于N/2,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器。
当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
步骤S012,将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
为了方便计算服务器进行计算,可将计算服务器的标识i设置为从0开始的整数,当然其他形式也可,只需在计算是将其他形式的标识转换为从0开始的整数即可。
比如i=0,轮次p=0,计算服务器总数为4,那么(i+p+1)%N=1,即u为1,1对应计算服务器1,那么计算服务器0的目的计算服务器为计算服务器1。
对于步骤S12,比如当所述轮次从1开始计数时,如果当前计算服务器间进行分块矩阵数据通信的轮次p小于等于N/2,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器。
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
步骤S013,将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
比如i=0,轮次p=1,计算服务器总数为4,那么(i+p)%N=1,即u为1,1对应计算服务器1,那么计算服务器0的目的计算服务器为计算服务器1。
步骤S13,如果比较结果不符合预设条件,则结束获得协同过滤距离子矩阵的计算。
比如,当所述轮次从0开始计数时,如果当前计算服务器间进行分块矩阵数据通信的轮次p大于等于N/2,则结束获得协同过滤距离子矩阵的计算。
比如,当所述轮次从1开始计数时,如果当前计算服务器间进行分块矩阵数据通信的轮次p大于N/2,则结束获得协同过滤距离子矩阵的计算。
步骤132,每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
在每个参与计算的计算服务器确认了其目的计算服务器后,将其本地存储的分块矩阵数据发送至目的服务器,并接受其他计算服务器发送的分块矩阵。比如前述
Figure BDA00002531286100141
Figure BDA00002531286100142
......
Node0将其存储的
Figure BDA00002531286100144
发送给Node1,接受Noden发送的
Figure BDA00002531286100145
然后其他计算服务器Nodei类似。
步骤133,每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
如前所述计算服务器Node0计算
Figure BDA00002531286100151
中的每个行向量与
Figure BDA00002531286100152
中的每个行向量之间的相似度,获得
Figure BDA00002531286100153
Figure BDA00002531286100154
之间的相似矩阵(即协同过滤子矩阵),其他计算服务器类似。
在本发明实施例中,每个参与计算的计算服务器对于其他计算服务器发送过来的分块矩阵数据,在计算完毕后,可将该其他计算服务器发送的分块矩阵数据释放,不予存储。
可选的,还包括:
步骤140,将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
每个参与计算的计算服务器在计算得到一部分的协同过滤子矩,可将其发送至前述专用服务器,然后在专用服务器进行统一整理存储。
参照图2,其示出了本发明一种协同过滤距离的处理方法实施例二的流程示意图,具体可以包括:
步骤210,针对N个计算服务器,每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
步骤220,每个参与计算的计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
步骤210、220与图1描述110、120原理基本类似,在此不再详述。
步骤230,每个参与计算的计算服务器将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;如果比较结果不符合预设条件,则进入步骤240;如果比较结果符合预设条件,则进入步骤250;
步骤240,结束获得协同过滤距离子矩阵的计算;
步骤230、240与图1描述S11和S13类似,在此不再详述。
步骤250,判断计算服务器的总个数N是否为偶数;如果计算服务器的总个数N为偶数,则进入步骤251;如果计算服务器的总个数N为奇数,则进入步骤253;
在本发明实施例中,计算服务器的个数可能在变化,可能增加也可能减少,为了保证每个计算节点不进行重复计算,偶数个和奇数个的通信方式存在一点区别,为了在计算服务器个数变化时,不用对整个并行系统进行重新设置,则需要进行步骤251以及后续判断。
步骤251,判断当前通信轮次p是否为最后一轮通信;如果当前轮次p是最后一轮通信,则进入步骤252;如果当前轮次p不是最后一轮通信,则进入步骤253;
比如计算服务器个数为4个,则本发明实施例最优通信轮次上限为2轮,在4个服务器进行步骤220后,进行第一轮通信过程,在通信后进行计算后,则进入第二轮通信过程,在通信计算后,则步骤230判断轮次P不符合计算条件(当P从0开始计数时,P=0和1符合计算条件,其他情况则不符合计算条件;当P从1开始计数时,P=1和2符合计算条件,其他情况则不符合计算条件),进入步骤240。
步骤252,每个参与计算的计算服务器,判断其标识i是否小于N/2;如果标识i小于N/2,则进入步骤253;如果标识i不小于N/2,则进入步骤230;
如前所述i=0、1......,那么对于四个计算服务器来说,按序标记为0、1、2、3。那么对与最后一轮通信,则0和1可以进入根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器。对于2和3来说,进入判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2的过程,在并行计算网络中该次通信完成后,所述的当前通信的轮次变为第三次,那么节点2和3就不用计算协同过滤距离子矩阵了。
步骤253,每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
步骤260,每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
步骤270,每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
步骤260与步骤270与图1的步骤132和133类似,在此不再详述。
参照图3和图4,图3为本发明实施例二偶数个计算服务器的通信过程中各节点通信示意图。图4为本发明实施例二奇数计算服务器的通信过程中各节点通信示意图。
图3中为4个计算服务器的示例,计算服务器包括Node0、Node1、Node2、Node3,Round1为第一次通信过程,Round2为第一次通信过程。
图4中5个计算服务器的示例,计算服务器包括Node0、Node1、Node2、Node3、Node4,Round1为第一次通信过程,Round2为第一次通信过程。
可选的,还包括:步骤270,将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
参照图5,其示出了本发明一种协同过滤距离的处理系统实施例一的结构示意图,具体可以包括:
N个计算服务器;
所述每个参与计算的计算服务器包括:
数据读取存储模块310,适于每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
本地数据计算模块320,适于每个参与计算的计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
循环通信计算模块330,适于每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵;
所述循环通信计算模块包括:
目的计算服务器确认模块331,适于针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
矩阵数据发送接收模块332,适于每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
协同计算模块333,适于每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
可选的,所述目的计算服务器确认模块包括:
第一目的计算服务器确认模块,适于所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器。
可选的,所述第一目的计算服务器确认模块包括:
停止判断模块,适于将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;
第二目的服务器确认子模块,适于如果判断的比较结果符合预设条件,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
第一停止模块,适于如果判断的比较结果不符合预设条件,则结束获得协同过滤距离子矩阵的计算。
可选的,所述停止判断模块之后还包括:
第二判断模块,适于判断计算服务器的总个数N是否为偶数;
第三判断模块,适于如果计算服务器的总个数N为偶数,则判断当前通信轮次p是否为最后一轮通信;
第四判断模块,适于如果当前轮次p是最后一轮通信,则每个参与计算的计算服务器,判断其标识i是否小于N/2;
第三目的服务器确认子模块,适于如果标识i小于N/2,则标识i小于N/2的计算服务器,进入根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
转入模块,适于如果标识i不小于N/2,则进入判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2的过程;
第三目的服务器确认模块,适于如果计算服务器的总个数N为奇数,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程。
可选的,当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
可选的,还包括:
整理模块,适于将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
可选的,所述矩阵数据发送接收模块包括:
第一矩阵数据发送接收模块,适于每个参与计算的计算服务器采用讯息传递接口发送函数MPI_send和讯息传递接口接收函数MPI_recv进行各计算服务器间的循环通信计算。
参照图6,,其示出了本发明一种协同过滤距离的处理系统实施例二的流程示意图,具体可以包括:
N个计算服务器;
所述每个参与计算的计算服务器包括:
数据读取存储模块410,适于每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
本地数据计算模块420,适于每个参与计算的计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
停止判断模块430,适于将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;如果比较结果不符合预设条件,则进入第一停止模块440;如果比较结果符合预设条件,则进入第二判断模块450
第一停止模块440,结束获得协同过滤距离子矩阵的计算;
第二判断模块450,适于判断计算服务器的总个数N是否为偶数;如果计算服务器的总个数N为偶数,则进入第三判断模块451;如果计算服务器的总个数N为奇数,则进入第二目的服务器确认子模块454;
第三判断模块451,适于判断当前通信轮次p是否为最后一轮通信;如果当前轮次p是最后一轮通信,则进入第四判断模块452;如果当前轮次p不是是最后一轮通信,则进入第二目的服务器确认子模块454。
第四判断模块452,适于如果当前轮次p是最后一轮通信,则每个参与计算的计算服务器,判断其标识i是否小于N/2;如果标识i小于N/2,则进入第二目的服务器确认子模块453;如果标识i不小于N/2,则进入停止判断模块430;
第二目的服务器确认子模块453,适于每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器。
矩阵数据发送接收模块460,适于每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
协同计算模块470,适于每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种协同过滤距离的处理设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (14)

1.一种协同过滤距离的处理方法,其特征在于,包括:
针对至少两个计算服务器,每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
每个参与计算计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵;所述每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获取协同过滤距离子矩阵具体包括:
针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
2.如权利要求1所述的方法,其特征在于,所述针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器包括:
所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器。
3.如权利要求2所述的方法,其特征在于,所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器包括:
将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;
如果比较结果符合预设条件,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
如果比较结果不符合预设条件,则结束获得协同过滤距离子矩阵的计算。
4.如权利要求3所述的方法,其特征在于,所述将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较之后还包括:
判断计算服务器的总个数N是否为偶数;
如果计算服务器的总个数N为偶数,则判断当前通信轮次p是否为最后一轮通信;
如果当前轮次p是最后一轮通信,则每个参与计算的计算服务器,判断其标识i是否小于N/2;
如果标识i小于N/2,则标识i小于N/2的计算服务器,进入根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
如果标识i不小于N/2,则进入判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2的过程;
如果当前轮次p是最后一轮通信,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
如果计算服务器的总个数N为奇数,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程。
5.如权利要求3或4所述的方法,其特征在于,
当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
6.如权利要求1所述的方法,其特征在于,还包括:
将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
7.如权利要求1所述的方法,其特征在于,所述每个参与计算的计算服务器进行各计算服务器间的循环通信计算包括:
每个参与计算的计算服务器采用讯息传递接口发送函数MPI_send和讯息传递接口接收函数MPI_recv进行各计算服务器间的循环通信计算。
8.一种协同过滤距离的处理系统,其特征在于,包括:
N个计算服务器;
所述每个参与计算的计算服务器包括:
数据读取存储模块,适于每个参与计算的计算服务器读取并存储相应的分块矩阵数据;所述分块矩阵数据为从原始矩阵数据中分配给所述计算服务器的分块矩阵数据;
本地数据计算模块,适于每个参与计算的计算服务器计算本地的分块矩阵数据,获得本地分块矩阵数据的协同过滤距离子矩阵;
循环通信计算模块,适于每个参与计算的计算服务器进行各计算服务器间的循环通信计算,获得本地分块矩阵数据的协同过滤距离子矩阵;
所述循环通信计算模块包括:
目的计算服务器确认模块,适于针对每个参与计算的计算服务器,确认当前计算服务器对应的目的计算服务器;所述目的计算服务器用于接收当前计算服务器发送的本地的矩阵数据;
矩阵数据发送接收模块,适于每个参与计算的计算服务器发送本地的分块矩阵数据至目的计算服务器,并接收其他计算服务器发送的分块矩阵数据;所述其他计算服务器为将当前计算服务器确认为目的服务器的计算服务器;
协同计算模块,适于每个接收到分块矩阵数据的计算服务器,结合本地的分块矩阵数据,计算获得本地的分块矩阵数据和接收到的分块矩阵数据之间的协同过滤距离子矩阵。
9.如权利要求8所述的系统,其特征在于,所述目的计算服务器确认模块包括:
第一目的计算服务器确认模块,适于所述针对每个参与计算的计算服务器,根据当前的循环通信计算轮次、当前计算服务器的标识和计算服务器的总个数,确认当前计算服务器对应的目的计算服务器。
10.如权利要求9所述的系统,其特征在于,所述第一目的计算服务器确认模块包括:
停止判断模块,适于将当前各计算服务器间进行循环通信计算的轮次p,与计算服务器的总个数N的一半N/2进行比较;
第二目的服务器确认子模块,适于如果判断的比较结果符合预设条件,则每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器;
第一停止模块,适于如果判断的比较结果不符合预设条件,则结束获得协同过滤距离子矩阵的计算。
11.如权利要求10所述的系统,其特征在于,所述停止判断模块之后还包括:
第二判断模块,适于判断计算服务器的总个数N是否为偶数;
第三判断模块,适于如果计算服务器的总个数N为偶数,则判断当前通信轮次p是否为最后一轮通信;
第四判断模块,适于如果当前轮次p是最后一轮通信,则每个参与计算的计算服务器,判断其标识i是否小于N/2;
第三目的服务器确认子模块,适于如果标识i小于N/2,则标识i小于N/2的计算服务器,进入根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程;
转入模块,适于如果标识i不小于N/2,则进入判断当前各计算服务器间进行循环通信计算的轮次p,是否小于计算服务器的总个数N的一半N/2的过程;
第三目的服务器确认模块,适于如果计算服务器的总个数N为奇数,则进入每个参与计算的计算服务器,根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u,将与u对应的计算服务器作为当前计算服务器的目标计算服务器的过程。
12.如权利要求10或11所述的系统,其特征在于,
当所述轮次从0开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p+1)%N计算得到结果u;
当所述轮次从1开始计数,计算服务器的标识i从0开始标识,则所述根据当前计算服务器的标识i和轮次p,针对N进行取模运算得到结果u包括:
将当前计算服务器的标识i和轮次p,代入公式(i+p)%N计算得到结果u。
13.如权利要求8所述的系统,其特征在于,还包括:
整理模块,适于将每个参与计算的计算服务器计算得到的所有协同过滤子矩阵进行统一转换,获得完整的协同过滤矩阵。
14.如权利要求8所述的系统,其特征在于,所述矩阵数据发送接收模块包括:
第一矩阵数据发送接收模块,适于每个参与计算的计算服务器采用讯息传递接口发送函数MPI_send和讯息传递接口接收函数MPI_recv进行各计算服务器间的循环通信计算。
CN201210517617.1A 2012-12-05 2012-12-05 一种协同过滤距离的处理方法和系统 Active CN103049486B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210517617.1A CN103049486B (zh) 2012-12-05 2012-12-05 一种协同过滤距离的处理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210517617.1A CN103049486B (zh) 2012-12-05 2012-12-05 一种协同过滤距离的处理方法和系统

Publications (2)

Publication Number Publication Date
CN103049486A true CN103049486A (zh) 2013-04-17
CN103049486B CN103049486B (zh) 2015-10-07

Family

ID=48062127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210517617.1A Active CN103049486B (zh) 2012-12-05 2012-12-05 一种协同过滤距离的处理方法和系统

Country Status (1)

Country Link
CN (1) CN103049486B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049489A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于处理协同过滤距离的方法和系统
CN105335385A (zh) * 2014-06-30 2016-02-17 北京金山安全软件有限公司 一种基于项目的协同过滤推荐方法及装置
CN105843860A (zh) * 2016-03-17 2016-08-10 山东大学 一种基于并行item-based协同过滤算法的微博关注推荐方法
CN109635191A (zh) * 2018-12-05 2019-04-16 广州市百果园信息技术有限公司 相似度确定方法、装置、存储介质和计算机设备
CN110941771A (zh) * 2019-12-24 2020-03-31 哈尔滨理工大学 一种电商平台中的商品并行动态推送方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1547351A (zh) * 2003-12-04 2004-11-17 上海交通大学 处理超大量用户的协同过滤推荐方法
US20080243997A1 (en) * 2007-03-29 2008-10-02 Motorola, Inc. Distributed content item recommendation system and method of operation therefor
CN102346751A (zh) * 2010-08-03 2012-02-08 阿里巴巴集团控股有限公司 一种信息推送方法及设备
CN103049489A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于处理协同过滤距离的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1547351A (zh) * 2003-12-04 2004-11-17 上海交通大学 处理超大量用户的协同过滤推荐方法
US20080243997A1 (en) * 2007-03-29 2008-10-02 Motorola, Inc. Distributed content item recommendation system and method of operation therefor
CN102346751A (zh) * 2010-08-03 2012-02-08 阿里巴巴集团控股有限公司 一种信息推送方法及设备
CN103049489A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于处理协同过滤距离的方法和系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049489A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于处理协同过滤距离的方法和系统
CN103049489B (zh) * 2012-12-05 2015-12-02 北京奇虎科技有限公司 用于处理协同过滤距离的方法和系统
CN105335385A (zh) * 2014-06-30 2016-02-17 北京金山安全软件有限公司 一种基于项目的协同过滤推荐方法及装置
CN105335385B (zh) * 2014-06-30 2019-09-17 珠海豹趣科技有限公司 一种基于项目的协同过滤推荐方法及装置
CN105843860A (zh) * 2016-03-17 2016-08-10 山东大学 一种基于并行item-based协同过滤算法的微博关注推荐方法
CN105843860B (zh) * 2016-03-17 2019-03-22 山东大学 一种基于并行item-based协同过滤算法的微博关注推荐方法
CN109635191A (zh) * 2018-12-05 2019-04-16 广州市百果园信息技术有限公司 相似度确定方法、装置、存储介质和计算机设备
CN110941771A (zh) * 2019-12-24 2020-03-31 哈尔滨理工大学 一种电商平台中的商品并行动态推送方法
CN110941771B (zh) * 2019-12-24 2022-08-23 哈尔滨理工大学 一种电商平台中的商品并行动态推送方法

Also Published As

Publication number Publication date
CN103049486B (zh) 2015-10-07

Similar Documents

Publication Publication Date Title
CN103049486B (zh) 一种协同过滤距离的处理方法和系统
CN112000819A (zh) 多媒体资源推荐方法、装置、电子设备及存储介质
JP5881153B2 (ja) 相関性のある情報の推薦
JP6511455B2 (ja) ユーザ行動の特徴を抽出して推奨を個人化する方法及びシステム
US9569499B2 (en) Method and apparatus for recommending content on the internet by evaluating users having similar preference tendencies
CN106033573A (zh) 一种物流运输状态信息的显示方法和设备
EP2724267A1 (en) Search method and apparatus
CN107273192B (zh) 一种产品交易的推进方法、服务器及系统
CN106411908B (zh) 一种推荐方法及装置
TWI552099B (zh) Recommended user method and device
CN106156130B (zh) 一种数据处理方法及装置
JP2010533921A5 (zh)
CN106296270A (zh) 商品推荐方法及装置
CN102890685B (zh) 一种信息重定向的方法及设备
US20160092964A1 (en) Electronic-Shopping Method and Apparatus
CN103019860B (zh) 基于协同过滤的处理方法和系统
CN104462438A (zh) 一种信息处理方法及装置
CN108712486B (zh) 工作量证明方法及装置
CN103049489B (zh) 用于处理协同过滤距离的方法和系统
CN107239473A (zh) 一种展示图片选择方法及装置
CN108304407B (zh) 一种进行对象排序的方法和系统
CN103049488B (zh) 一种协同过滤处理方法和系统
CN112926090A (zh) 基于差分隐私的业务分析方法及装置
CN104618324A (zh) 一种用于数据发送以及数据合法性检查的方法与装置
CN108664484A (zh) 媒体内容推荐方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220718

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right