CN104933143B - 获取推荐对象的方法及装置 - Google Patents

获取推荐对象的方法及装置 Download PDF

Info

Publication number
CN104933143B
CN104933143B CN201510342894.7A CN201510342894A CN104933143B CN 104933143 B CN104933143 B CN 104933143B CN 201510342894 A CN201510342894 A CN 201510342894A CN 104933143 B CN104933143 B CN 104933143B
Authority
CN
China
Prior art keywords
vector
new
matrix
user
new user
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
Application number
CN201510342894.7A
Other languages
English (en)
Other versions
CN104933143A (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 Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201510342894.7A priority Critical patent/CN104933143B/zh
Publication of CN104933143A publication Critical patent/CN104933143A/zh
Application granted granted Critical
Publication of CN104933143B publication Critical patent/CN104933143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种获取推荐对象的方法及装置,具有搜索速度快,适用范围广等优点。该方法包括:构建原始用户矩阵和原始对象矩阵,其中,原始用户矩阵中的每一行为原始用户向量,每个原始用户向量表示一个用户的多重属性特征,原始对象矩阵中的每一行为原始对象向量,每个原始对象向量表示一个对象的多重属性特征;对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵;对新对象矩阵中的新对象向量构建对象高维索引结构;对新用户矩阵中的各个新用户向量在对象高维索引结构中进行最近邻搜索,得到新用户向量对应的最近邻新对象向量;根据各个新用户向量及其对应的最近邻新对象向量,输出用户与推荐对象的映射。

Description

获取推荐对象的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种获取推荐对象的方法及装置。
背景技术
随着互联网技术的发展,人们进入了信息过载的时代。在用户访问网站的过程中,大量的新闻、商品、视频、音乐等等对象呈现在了用户面前。怎样筛选出用户真正感兴趣的内容对提高网站的访问量及收益有着非常重要的意义。推荐系统相关的技术在这样的背景下得到了越来越广泛的使用。
近几年来矩阵分解算法成为了推荐系统领域研究的主流,研究表明在个性化推荐中使用矩阵分解技术可以得到比传统基于邻域的协同过滤更好的结果。矩阵分解算法将用户对对象的评分矩阵进行分解,生成用户矩阵U和对象矩阵V,这样就将用户和对象映射到了高维的潜语义空间。用户矩阵及对象矩阵的每一行都是一个向量,表示相应的用户和对象。用户向量与一个对象向量的内积就是该用户对对象的评分,内积越大,评分越高,表示越是推荐。每个用户的推荐对象可以取所有对象中K个内积最大的对象向量对应的对象作为推荐结果。
在实际应用场景中,用户和对象的数量往往庞大,相当于多达千万的用户都需要在千万级对象构成的高维空间中搜索K个最大的内积,该计算过程非常耗时。因此需要一种方案能够快速地完成用户和对象向量间最大内积的Top K计算。
若采用最基本的线性搜索方法进行最近邻搜索,则时间复杂度较高,无法满足海量数据下的需求。常用的解决方案是建立高维索引,利用高效的数据结构和算法完成搜索。但是,由于内积不满足三角不等性且无法衡量向量间的相似性,导致常用的聚类、高维索引树、局部感知哈希等建立高维索引的方案均无法直接适用于内积空间的搜索。
发明内容
有鉴于此,本发明提供一种获取推荐对象的方法及装置,具有搜索速度快,适用范围广等优点。
为实现上述目的,根据本发明的一个方面,提供了一种获取推荐对象的方法,包括:构建原始用户矩阵和原始对象矩阵,其中,所述原始用户矩阵中的每一行为原始用户向量,每个所述原始用户向量表示一个用户的多重属性特征,所述原始对象矩阵中的每一行为原始对象向量,每个所述原始对象向量表示一个对象的多重属性特征;对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵;对所述新对象矩阵中的新对象向量构建对象高维索引结构;对所述新用户矩阵中的各个新用户向量在所述对象高维索引结构中进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;根据各个所述新用户向量及其对应的所述最近邻新对象向量,输出用户与推荐对象的映射。
可选地,所述对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵的步骤包括:对所述原始用户矩阵的第i行向量xi添加数值0作为一个新的维度,得到新用户向量从而得到所述新用户矩阵;计算所述原始对象矩阵的第j行向量yj的2-范数以及该2-范数的最大值对所述yj添加作为一个新的维度,得到新对象向量从而得到所述新对象矩阵。
可选地,所述对所述新对象矩阵中的新对象向量构建对象高维索引结构的步骤包括:将所述新对象矩阵中的新对象向量聚类得到多个对象子类,每个对象子类具有一个对象聚类中心;为每个所述对象子类建立vp-tree树结构。
可选地,所述对所述新用户矩阵中的各个新用户向量在所述对象高维索引结构中进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量的步骤包括:将所述对象高维索引结构序列化地保存为对象索引文件并发送给多个节点;在每个所述节点上,根据所述新对象矩阵和所述对象索引文件重建出所述对象高维索引结构;采用map-reduce技术,通过hadoop框架在所述多个节点中对所述新用户矩阵中的各个新用户向量进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量。
可选地,所述采用map-reduce技术,通过hadoop框架在所述多个节点中对所述新用户矩阵中的各个新用户向量进行最近邻搜索,得到所述新用户向量对应的所述最近邻新对象向量的步骤包括:将所述新用户矩阵均分成多个新用户向量组并分发到所述多个节点,所述hadoop为分发到各个节点的所述新用户向量组分别建立mapper;在各个所述mapper内为对应的所述新用户向量组中各个新用户向量执行以下操作:计算所述新用户向量与各个所述对象聚类中心的欧氏距离,找到欧氏距离最近的所述对象聚类中心,进入该欧氏距离最近的对象聚类中心对应的vp-tree,通过递归遍历树完成该vp-tree的最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;在reducer中汇总并保存所述新用户向量与对应的所述最近邻新向量对象的映射关系。
为实现上述目的,根据本发明的另一方面,提供了一种获取推荐对象的装置,包括:矩阵构建模块,用于构建原始用户矩阵和原始对象矩阵,其中,所述原始用户矩阵中的每一行为原始用户向量,每个所述原始用户向量表示一个用户的多重属性特征,所述原始对象矩阵中的每一行为原始对象向量,每个所述原始对象向量表示一个对象的多重属性特征;保序变换模块,用于对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵;索引构建模块,用于对所述新对象矩阵中的新对象向量构建对象高维索引结构;搜索模块,用于对所述新用户矩阵中的各个新用户向量在所述对象高维索引结构中进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;输出模块,用于根据各个所述新用户向量及其对应的所述最近邻新对象向量,输出用户与推荐对象的映射。
可选地,所述矩阵构建模块还用于:对所述原始用户矩阵的第i行向量xi添加数值0作为一个新的维度,得到所述新用户向量从而得到所述新用户矩阵;计算所述原始对象矩阵的第j行向量yj的2-范数以及该2-范数的最大值对所述yj添加作为一个新的维度,得到所述新对象向量从而得到所述新对象矩阵。
可选地,所述索引构建模块还用于:将所述新对象矩阵中的新对象向量聚类,得到多个对象子类,每个对象子类具有一个对象聚类中心;为每个所述对象子类建立vp-tree树结构。
可选地,所述搜索模块还用于:将所述对象高维索引结构序列化地保存为对象索引文件并发送给多个节点;在每个所述节点上,根据所述新对象矩阵和所述对象索引文件重建出所述对象高维索引结构;采用map-reduce技术,通过hadoop框架在所述多个节点中对所述新用户矩阵中的各个新用户向量进行最近邻搜索,得到所述新用户向量对应的所述最近邻新对象向量。
可选地,所述搜索模块还用于:将所述新用户矩阵均分成多个新用户向量组并分发到所述多个节点,所述hadoop为分发到各个节点的所述新用户向量组分别建立mapper;在各个所述mapper内为对应的所述新用户向量组中各个新用户向量执行以下操作:计算所述新用户向量与各个所述对象聚类中心的欧氏距离,找到欧氏距离最近的所述对象聚类中心,进入该欧氏距离最近的对象聚类中心对应的vp-tree,通过递归遍历树完成该vp-tree的最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;在reducer中汇总并保存所述新用户向量与对应的所述最近邻新向量对象的映射关系。
根据本发明的技术方案,提出对原始用户矩阵和原始对象矩阵进行保序变换生成新数据。由于在新数据上进行欧氏空间的最近邻搜索与在原数据上做最大内积搜索有相同的结果,因此可以利用适用于欧式空间的对象高维索引结构等价地完成最大内积的搜索。因此,本发明的技术方案与传统的线性搜索技术相比具有更高计算效率,并且克服了现有技术中各种高维索引结构无法适用于最大内积搜索的问题,具有搜索速度快,适用范围广等优点。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的获取推荐对象的方法的主要步骤的示意图;
图2是根据本发明实施例的获取推荐对象的装置的主要部件的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的获取推荐对象的方法的主要步骤的示意图。如图1所示,该方法主要包括如下步骤S1至步骤S5。
步骤S1:构建原始用户矩阵和原始对象矩阵。其中,原始用户矩阵中的每一行为原始用户向量,每个原始用户向量表示一个用户的多重属性特征。原始对象矩阵中的每一行为原始对象向量,每个原始对象向量表示一个对象的多重属性特征。
步骤S2:对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵。保序变换的目的是将最大内积搜索问题转换为欧式空间的最近邻问题。保序变换的具体方式可以有多种,本发明不做限定。
步骤S3:对新对象矩阵中的新对象向量构建对象高维索引结构。构建对象高维索引结构的具体方式可以有多种,本发明不做限定。
步骤S4:对新用户矩阵中的各个新用户向量在对象高维索引结构中进行最近邻搜索,得到新用户向量对应的最近邻新对象向量。
步骤S5:根据各个新用户向量及其对应的最近邻新对象向量,输出用户与推荐对象的映射。其中,每个新用户向量代表一个用户,最近邻新对象向量代表匹配度最高的、最为推荐的对象。因此,可以根据“新用户向量-最近邻新对象向量”对应关系,输出“用户-推荐对象”的映射。
由上可知,根据本发明实施例的获取推荐对象的方法,提出对原始用户矩阵和原始对象矩阵进行保序变换生成新数据。由于在新数据上进行欧氏空间的最近邻搜索与在原数据上做最大内积搜索有相同的结果,因此可以利用适用于欧式空间的对象高维索引结构等价地完成最大内积的搜索。因此,本发明的技术方案与传统的线性搜索技术相比具有更高计算效率,并且克服了现有技术中各种高维索引结构无法适用于最大内积搜索的问题,具有搜索速度快,适用范围广等优点。
在本发明的实施方式中,步骤S2的保序变换过程可以具体包括如下的步骤S21至步骤S22。
步骤S21:对原始用户矩阵的第i行向量xi添加数值0作为一个新的维度,得到新用户向量从而得到新用户矩阵。其中,i为自然数且1≤i≤A,A表示原始用户矩阵的行数,也就是用户的数目。
步骤S22:计算原始对象矩阵的第j行向量yj的2-范数以及该2-范数的最大值对yj添加作为一个新的维度,得到新对象向量从而得到新对象矩阵。其中,j为自然数且1≤j≤B,B表示原始对象矩阵的行数,也就是对象的数目。
上述实施方式的保序变换方法具有算法简单,处理速度快的优点。通过上述保序变换,用户向量在新对象矩阵中计算欧式空间的最近邻,就与在变换前的原始对象矩阵中进行最大内积搜索有着相同的结果。假设找到的最近邻是新对象矩阵的第j行向量,那么变换前搜索到的最大内积结果是原始对象矩阵的第j行向量。
在本发明的实施方式中,步骤S3的构建对象高维索引结构过程可以具体包括如下的步骤S31至步骤S32。
步骤S31:将新对象矩阵中的新对象向量聚类,得到多个对象子类,每个对象子类具有一个对象聚类中心。由于每个对象子类内部的数据具有相似性,因此在搜索时可以先找到与查询用户向量欧式距离最近的对象聚类中心,之后直接在属于该对象聚类中心的对象向量中寻找最近邻而忽略掉其它所有数据。假设指定有n个子类,在查询时只需要搜索大约1/n的数据,成n倍加快了最近邻的搜索速度。进行聚类之后,虽然此时在每一个对象子类内部可以直接进行线性搜索,但更高效的方式是进一步为每个对象子类中进一步建立vp-tree树结构。
步骤S32:为每个对象子类建立vp-tree树结构。vp-tree树结构的具体构建过程为:(1)选择当前对象数据集中的一个数据作为制高点(vantage-point,vp)。制高点可以随机选取。当制高点处于根节点时制高点对应的数据集包含子类中的全部数据。但通常制高点并不处于根节点,制高点对应的数据集为子类的部分数据。(2)计算数据集中其他所有数据与制高点的欧氏距离,将距离的中值保存在当前树节点中。距离的中值可用于数据划分及搜索时的条件判断。(3)将距离小于中值的数据划分到左子树,距离大于中值的数据划分到右子树。通过这样的划分将当前数据集划分为了两个部分。(4)利用步骤(3)划分成的两部分数据集分别构建左右子树。如果这两部分数据集包含的数据个数小于预定数目阈值(例如“1”),则这部分建树过程结束。否则返回步骤(1)继续递归建树过程。
上述实施方式中,通过结合聚类和vp-tree技术来构建对象高维索引结构,可以节约搜索空间,提高搜索效率。
在本发明的实施方式中,步骤S4的最近邻搜索过程可以在单机上实现,但为了加快搜索速度,优选采用分布式技术在多个节点上实现。本发明并不限定分布式技术的具体形式,可以根据需要灵活选择,均可以实现加快搜索速度,提高搜索效率的目的。map-reduce技术与hadoop框架是最成熟最常见的分布式技术之一。采用map-reduce技术与hadoop框架实现最近邻搜索时,步骤S4的具体过程可以如下步骤S41至步骤S43所示。
步骤S41:将对象高维索引结构序列化地保存为对象索引文件并发送给多个节点。对象索引文件的保存的顺序和具体方式不限,只要保证通过读取对象索引文件可以在内存中恢复对象高维索引结构即可。例如,对象索引文件可以包括:每个聚类和vp-tree的映射、各个对象聚类中心向量,vp-tree树结构中各个节点距离中值、制高点向量在新对象矩阵中的索引以及左右子节点位置信息等等。此处为本领域技术人员的已知知识,不做赘述。
步骤S42:在每个节点上,根据新对象矩阵和对象索引文件重建出对象高维索引结构。具体过程为:读取完整的对象矩阵到内存中,反序列化对象索引文件,读取各个聚类中心向量,按顺序读取与每个聚类中心分别对应的vp-tree各节点的制高点、距离中值等数据,在内存中恢复vp-tree树结构。
步骤S43:采用map-reduce技术,通过hadoop框架在多个节点中对新用户矩阵中的各个新用户向量进行最近邻搜索,得到新用户向量对应的最近邻新对象向量。其中,步骤S43的具体过程可以如下步骤S431至步骤S433所示。
步骤S431:将新用户矩阵均分成多个新用户向量组并分发到多个节点,hadoop为分发到各个节点的新用户向量组分别建立mapper。
步骤S432:在各个mapper内为对应的新用户向量组中各个新用户向量执行以下操作:计算新用户向量与各个对象聚类中心的欧氏距离,找到欧氏距离最近的对象聚类中心。进入该欧氏距离最近的对象聚类中心对应的vp-tree,通过递归遍历树完成该vp-tree的最近邻搜索,得到新用户向量对应的最近邻新对象向量。
步骤S433:在reducer中汇总并保存新用户向量与对应的最近邻新向量对象的映射关系。
需要说明的是,步骤S431中设定的mapper个数越多,并行度越高,整体搜索速度越快。但每个mapper中都需要一份完整的对象高维索引结构,这将耗费大量内存资源,很容易出现内存瓶颈。因此mapper的个数需要合理设置。
还需要说明的是,尽管在步骤S431中为了节约内存资源限制了mapper个数,但是在执行步骤S432的过程中,可以在单个mapper内部使用多线程并行搜索多个新用户向量对应的最近邻新对象向量。这样,实现了mapper与mapper之间、线程与线程之间两个级别的并行,进一步提高计算效率。
还需要说明的是,步骤S432中“最近邻搜索”可以广义地理解为“K近邻搜索”,即“寻找出距离最近的前K(K为大于1的自然数)个向量”。这时,搜索过程中可以维护一个先序队列用于保存K近邻,变量tau记录队列中当前K近邻的最远距离。具体过程是:计算用户向量与当前节点中制高点的距离d;如果d小于tau,则将距离最远的邻居从队列中弹出,同时将当前结点的制高点放入队列,用d更新tau;如果d-tau小于等于当前节点的距离中值则进入左子树搜索,如果d+tau大于等于距离中值进入右子树搜索;搜索结束后,先序队列中保存的数据就是最终的K近邻。
图2是根据本发明实施例的获取推荐对象的装置的主要部件的示意图。如图2所示,该获取推荐对象的装置20主要包括矩阵构建模块21、保序变换模块22、索引构建模块23、搜索模块24以及输出模块25。
矩阵构建模块21用于构建原始用户矩阵和原始对象矩阵。原始用户矩阵中的每一行为原始用户向量,每个原始用户向量表示一个用户的多重属性特征。原始对象矩阵中的每一行为原始对象向量,每个原始对象向量表示一个对象的多重属性特征。
保序变换模块22用于对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵。
索引构建模块23用于对新对象矩阵中的新对象向量构建对象高维索引结构。
搜索模块24用于对新用户矩阵中的各个新用户向量在对象高维索引结构中进行最近邻搜索,得到新用户向量对应的最近邻新对象向量。
输出模块25用于根据各个新用户向量及其对应的最近邻新对象向量,输出用户与推荐对象的映射。
由上可知,根据本发明实施例的获取推荐对象的装置,提出对原始用户矩阵和原始对象矩阵进行保序变换生成新数据。由于在新数据上进行欧氏空间的最近邻搜索与在原数据上做最大内积搜索有相同的结果,因此可以利用适用于欧式空间的对象高维索引结构等价地完成最大内积的搜索。因此,本发明的技术方案与传统的线性搜索技术相比具有更高计算效率,并且克服了现有技术中各种高维索引结构无法适用于最大内积搜索的问题,具有搜索速度快,适用范围广等优点。
在本发明的实施方式中,矩阵构建模块21还可以用于:对原始用户矩阵的第i行向量xi添加数值0作为一个新的维度,得到新用户向量从而得到新用户矩阵。其中,i为自然数且1≤i≤A,A表示原始用户矩阵的行数,也就是用户的数目。矩阵构建模块21还可以用于:计算原始对象矩阵的第j行向量yj的2-范数以及该2-范数的最大值对yj添加作为一个新的维度,得到新对象向量从而得到新对象矩阵。其中,j为自然数且1≤j≤B,B表示原始对象矩阵的行数,也就是对象的数目。这样的保序变换方法具有算法简单,处理速度快的优点。
在本发明的实施方式中,索引构建模块23还可以用于:将新对象矩阵中的新对象向量聚类,得到多个对象子类,每个对象子类具有一个对象聚类中心;为每个对象子类建立vp-tree树结构。通过结合聚类和vp-tree技术来构建对象高维索引结构,可以节约搜索空间,提高搜索效率。
在本发明的实施方式中,搜索模块24还可以用于:将对象高维索引结构序列化地保存为对象索引文件并发送给多个节点;在每个节点上,根据新对象矩阵和对象索引文件重建出对象高维索引结构;采用map-reduce技术,通过hadoop框架在多个节点中对新用户矩阵中的各个新用户向量进行最近邻搜索,得到新用户向量对应的最近邻新对象向量。map-reduce技术与hadoop框架是最成熟最常见的分布式技术之一。
在本发明的实施方式中,搜索模块24还可以用于:将新用户矩阵均分成多个新用户向量组并分发到多个节点,hadoop为分发到各个节点的新用户向量组分别建立mapper;在各个mapper内为对应的新用户向量组中各个新用户向量执行以下操作:计算新用户向量与各个对象聚类中心的欧氏距离,找到欧氏距离最近的对象聚类中心,进入该欧氏距离最近的对象聚类中心对应的vp-tree,通过递归遍历树完成该vp-tree的最近邻搜索,得到新用户向量对应的最近邻新对象向量;在reducer中汇总并保存新用户向量与对应的最近邻新向量对象的映射关系。
综上,本发明的获取推荐对象的方法和装置,解决了推荐系统中矩阵分解的最大内积搜索在海量数据下因计算效率而无法实际应用的问题。本发明通过保序变换将内积搜索转化为欧式空间的K近邻搜索,结合聚类及高维索引树提出了一种高效的索引结构,并利用分布式及多线程技术突破了搜索计算的单机瓶颈,可以将整体的性能提高几个数量级,具有速度快,效率高等优点。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (6)

1.一种获取推荐对象的方法,其特征在于,包括:
构建原始用户矩阵和原始对象矩阵,其中,所述原始用户矩阵中的每一行为原始用户向量,每个所述原始用户向量表示一个用户的多重属性特征,所述原始对象矩阵中的每一行为原始对象向量,每个所述原始对象向量表示一个对象的多重属性特征;
对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵;其中,保序变换用于将最大内积搜索问题转换为欧式空间的最近邻问题;
对所述新对象矩阵中的新对象向量构建对象高维索引结构;
对所述新用户矩阵中的各个新用户向量在所述对象高维索引结构中进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;
根据各个所述新用户向量及其对应的所述最近邻新对象向量,输出用户与推荐对象的映射;
其中,所述对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵的步骤包括:
对所述原始用户矩阵的第i行向量xi添加数值0作为一个新的维度,得到所述新用户向量从而得到所述新用户矩阵;i为自然数且1≤i≤A,A表示原始用户矩阵的行数;
计算所述原始对象矩阵的第j行向量yj的2-范数以及该2-范数的最大值对所述yj添加作为一个新的维度,得到所述新对象向量从而得到所述新对象矩阵;j为自然数且1≤j≤B,B表示原始对象矩阵的行数;
所述对所述新对象矩阵中的新对象向量构建对象高维索引结构的步骤包括:
将所述新对象矩阵中的新对象向量聚类得到多个对象子类,每个对象子类具有一个对象聚类中心;
为每个所述对象子类建立vp-tree树结构。
2.根据权利要求1所述的获取推荐对象的方法,其特征在于,
所述对所述新用户矩阵中的各个新用户向量在所述对象高维索引结构中进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量的步骤包括:
将所述对象高维索引结构序列化地保存为对象索引文件并发送给多个节点;
在每个所述节点上,根据所述新对象矩阵和所述对象索引文件重建出所述对象高维索引结构;
采用map-reduce技术,通过hadoop框架在所述多个节点中对所述新用户矩阵中的各个新用户向量进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量。
3.根据权利要求2所述的获取推荐对象的方法,其特征在于,所述采用map-reduce技术,通过hadoop框架在所述多个节点中对所述新用户矩阵中的各个新用户向量进行最近邻搜索,得到所述新用户向量对应的所述最近邻新对象向量的步骤包括:
将所述新用户矩阵均分成多个新用户向量组并分发到所述多个节点,所述hadoop为分发到各个节点的所述新用户向量组分别建立mapper;
在各个所述mapper内为对应的所述新用户向量组中各个新用户向量执行以下操作:计算所述新用户向量与各个所述对象聚类中心的欧氏距离,找到欧氏距离最近的所述对象聚类中心,进入该欧氏距离最近的对象聚类中心对应的vp-tree,通过递归遍历树完成该vp-tree的最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;
在reducer中汇总并保存所述新用户向量与对应的所述最近邻新向量对象的映射关系。
4.一种获取推荐对象的装置,其特征在于,包括:
矩阵构建模块,用于构建原始用户矩阵和原始对象矩阵,其中,所述原始用户矩阵中的每一行为原始用户向量,每个所述原始用户向量表示一个用户的多重属性特征,所述原始对象矩阵中的每一行为原始对象向量,每个所述原始对象向量表示一个对象的多重属性特征;
保序变换模块,用于对原始用户矩阵和原始对象矩阵进行保序变换,得到新用户矩阵和新对象矩阵;其中,保序变换用于将最大内积搜索问题转换为欧式空间的最近邻问题;
索引构建模块,用于对所述新对象矩阵中的新对象向量构建对象高维索引结构;
搜索模块,用于对所述新用户矩阵中的各个新用户向量在所述对象高维索引结构中进行最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;
输出模块,用于根据各个所述新用户向量及其对应的所述最近邻新对象向量,输出用户与推荐对象的映射;
其中,所述矩阵构建模块还用于:
对所述原始用户矩阵的第i行向量xi添加数值0作为一个新的维度,得到所述新用户向量从而得到所述新用户矩阵;i为自然数且1≤i≤A,A表示原始用户矩阵的行数;
计算所述原始对象矩阵的第j行向量yj的2-范数以及该2-范数的最大值对所述yj添加作为一个新的维度,得到所述新对象向量从而得到所述新对象矩阵;j为自然数且1≤j≤B,B表示原始对象矩阵的行数;
所述索引构建模块还用于:
将所述新对象矩阵中的新对象向量聚类,得到多个对象子类,每个对象子类具有一个对象聚类中心;
为每个所述对象子类建立vp-tree树结构。
5.根据权利要求4所述的获取推荐对象的装置,其特征在于,所述搜索模块还用于:
将所述对象高维索引结构序列化地保存为对象索引文件并发送给多个节点;
在每个所述节点上,根据所述新对象矩阵和所述对象索引文件重建出所述对象高维索引结构;
采用map-reduce技术,通过hadoop框架在所述多个节点中对所述新用户矩阵中的各个新用户向量进行最近邻搜索,得到所述新用户向量对应的所述最近邻新对象向量。
6.根据权利要求5所述的获取推荐对象的装置,其特征在于,所述搜索模块还用于:
将所述新用户矩阵均分成多个新用户向量组并分发到所述多个节点,所述hadoop为分发到各个节点的所述新用户向量组分别建立mapper;
在各个所述mapper内为对应的所述新用户向量组中各个新用户向量执行以下操作:计算所述新用户向量与各个所述对象聚类中心的欧氏距离,找到欧氏距离最近的所述对象聚类中心,进入该欧氏距离最近的对象聚类中心对应的vp-tree,通过递归遍历树完成该vp-tree的最近邻搜索,得到所述新用户向量对应的最近邻新对象向量;
在reducer中汇总并保存所述新用户向量与对应的所述最近邻新向量对象的映射关系。
CN201510342894.7A 2015-06-18 2015-06-18 获取推荐对象的方法及装置 Active CN104933143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510342894.7A CN104933143B (zh) 2015-06-18 2015-06-18 获取推荐对象的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510342894.7A CN104933143B (zh) 2015-06-18 2015-06-18 获取推荐对象的方法及装置

Publications (2)

Publication Number Publication Date
CN104933143A CN104933143A (zh) 2015-09-23
CN104933143B true CN104933143B (zh) 2019-06-04

Family

ID=54120310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510342894.7A Active CN104933143B (zh) 2015-06-18 2015-06-18 获取推荐对象的方法及装置

Country Status (1)

Country Link
CN (1) CN104933143B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052485B (zh) * 2017-12-15 2021-05-07 东软集团股份有限公司 向量相似度的分布式计算方法和装置,存储介质和节点
CN109446413B (zh) * 2018-09-25 2021-06-01 上海交通大学 基于物品关联关系的序列化推荐方法
CN109582874B (zh) * 2018-12-10 2020-12-01 北京搜狐新媒体信息技术有限公司 一种基于双向lstm的相关新闻挖掘方法及系统
CN110232152B (zh) * 2019-05-27 2021-03-23 腾讯科技(深圳)有限公司 内容推荐方法、装置、服务器以及存储介质
CN113379449B (zh) * 2021-05-31 2022-10-04 北京达佳互联信息技术有限公司 多媒体资源召回方法、装置、电子设备以及存储介质
CN115545822A (zh) * 2022-09-20 2022-12-30 中国电信股份有限公司 产品属性推荐方法和装置、计算机存储介质、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279551A (zh) * 2013-06-06 2013-09-04 浙江大学 一种基于欧氏距离的高维数据准确近邻快速检索方法
CN103377237A (zh) * 2012-04-27 2013-10-30 常州市图佳网络科技有限公司 高维数据的近邻搜索方法以及快速近似图像搜索方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526468B2 (en) * 1999-01-08 2009-04-28 Computer Associates Think, Inc. System and method for recursive path analysis of DBMS procedures
JP4591794B2 (ja) * 2008-04-22 2010-12-01 ソニー株式会社 情報処理装置および方法、並びにプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377237A (zh) * 2012-04-27 2013-10-30 常州市图佳网络科技有限公司 高维数据的近邻搜索方法以及快速近似图像搜索方法
CN103279551A (zh) * 2013-06-06 2013-09-04 浙江大学 一种基于欧氏距离的高维数据准确近邻快速检索方法

Also Published As

Publication number Publication date
CN104933143A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN104933143B (zh) 获取推荐对象的方法及装置
Tang et al. Tri-clustered tensor completion for social-aware image tag refinement
CN110990638B (zh) 基于fpga-cpu异构环境的大规模数据查询加速装置及方法
Ediger et al. Stinger: High performance data structure for streaming graphs
US10896171B2 (en) Big data blockchains with Merkle trees
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
CN102915365A (zh) 基于Hadoop的分布式搜索引擎构建方法
CN105608135B (zh) 一种基于Apriori算法的数据挖掘方法及系统
Choi et al. SPIDER: a system for scalable, parallel/distributed evaluation of large-scale RDF data
Schätzle et al. Large-scale bisimulation of RDF graphs
CN106095951B (zh) 基于负载均衡和查询日志的数据空间多维索引方法
CN107480685A (zh) 一种基于GraphX的分布式幂迭代聚类方法和装置
CN103701469A (zh) 一种大规模图数据的压缩存储方法
US20230056760A1 (en) Method and apparatus for processing graph data, device, storage medium, and program product
CN103324762A (zh) 基于Hadoop的索引创建方法及其索引方法
Zhang et al. Multi-type co-clustering of general heterogeneous information networks via nonnegative matrix tri-factorization
CN105426392A (zh) 一种协同过滤推荐方法及系统
CN113220820B (zh) 基于图的高效sparql查询应答方法、装置和设备
Cuzzocrea et al. MapReduce-based algorithms for managing big RDF graphs: state-of-the-art analysis, paradigms, and future directions
Katib et al. RIQ: Fast processing of SPARQL queries on RDF quadruples
Mo et al. Asynchronous index strategy for high performance real-time big data stream storage
Samsi et al. Benchmarking scidb data import on hpc systems
CN103761298A (zh) 一种基于分布式架构的实体匹配方法
Li An Algorithm for Mining Frequent Itemsets from Library Big Data.
Zhou et al. Accurate querying of frequent subgraphs in power grid graph data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant