CN105550240A - 一种推荐的方法及装置 - Google Patents
一种推荐的方法及装置 Download PDFInfo
- Publication number
- CN105550240A CN105550240A CN201510895722.2A CN201510895722A CN105550240A CN 105550240 A CN105550240 A CN 105550240A CN 201510895722 A CN201510895722 A CN 201510895722A CN 105550240 A CN105550240 A CN 105550240A
- Authority
- CN
- China
- Prior art keywords
- matrix
- value
- item
- node
- sparse matrix
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/73—Querying
- G06F16/735—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2216/00—Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
- G06F2216/03—Data mining
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)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种推荐的方法及装置,该方法包括:获取用户信息、待推荐元素、评价信息的对应关系;根据所述对应关系建立评价信息的稀疏矩阵;根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;根据所述完整矩阵和用户信息,为用户推荐待推荐元素。本发明提供了一种推荐的方法及装置,能够更加简单的实现信息推荐。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种推荐的方法及装置。
背景技术
目前随着在各个行业数据量的不断增加,对于大数据的挖掘和分析面临着严峻的挑战。需要一个高效合理的大数据挖掘计算分析平台来对各个行业的海量数据进行高效、及时、准确的处理。推荐是大数据领域经常会涉及的一个部分。推荐在视频电影类网站、购物类网站以及网页推荐等领域都有着广泛的应用。
现有技术的推荐方法中,根据采集到的历史数据,为用户推荐相应的信息。现有的推荐方法中对历史数据的要求较高,需要获取与待推荐的信息相关的多个方面的数据。在计算推荐结果时,由于输入数据较多,计算过程也较复杂。总之,现有技术中的推荐方法较复杂。
发明内容
本发明提供了一种推荐的方法及装置,能够更加简单的实现信息推荐。
一方面,本发明提供了一种推荐的方法,包括:
S1:获取用户信息、待推荐元素、评价信息的对应关系;
S2:根据所述对应关系建立评价信息的稀疏矩阵;
S3:根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;
S4:根据所述完整矩阵和用户信息,为用户推荐待推荐元素。
进一步地,所述S3,包括:
A1:将所述稀疏矩阵作为待处理矩阵,将所述稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
A2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于所述稀疏矩阵中第s行第i列的项,yjt为位于所述稀疏矩阵中第j行第t列的项,k为所述待处理矩阵的列数,m为所述待处理矩阵的行数,N为所述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
A3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
A4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤A6,否则,执行步骤A5;
A5:将所述中间矩阵作为所述待处理矩阵,返回步骤A2;
A6:将所述中间矩阵作为所述完整矩阵。
进一步地,所述S3,包括:
B1:将所述稀疏矩阵拆分成第二预设值个子稀疏矩阵;
B2:将每个子稀疏矩阵分发到预设集群的多个节点上;
B3:在每个节点上,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵;
B4:根据每个节点对应的子完整矩阵生成所述完整矩阵。
进一步地,还包括:预先在所述集群中设置Spark大数据平台;
所述B3,包括:在每个节点的Spark大数据平台中,将每个节点上的子稀疏矩阵封装为基于RDD的数组,调用Rating类对所述数组进行封装,生成Rating对象,根据每个节点上的Rating对象的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的Rating对象中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的Rating对象中,生成每个节点对应的子完整矩阵。
进一步地,所述第一预设值为10。
另一方面,本发明提供了一种推荐的装置,包括:
获取单元,用于获取用户信息、待推荐元素、评价信息的对应关系;
建立单元,用于根据所述对应关系建立评价信息的稀疏矩阵;
预测单元,用于根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;
推荐单元,用于根据所述完整矩阵和用户信息,为用户推荐待推荐元素。
进一步地,所述预测单元,具体用于执行:
A1:将所述稀疏矩阵作为待处理矩阵,将所述稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
A2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于所述稀疏矩阵中第s行第i列的项,yjt为位于所述稀疏矩阵中第j行第t列的项,k为所述待处理矩阵的列数,m为所述待处理矩阵的行数,N为所述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
A3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
A4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤A6,否则,执行步骤A5;
A5:将所述中间矩阵作为所述待处理矩阵,返回步骤A2;
A6:将所述中间矩阵作为所述完整矩阵。
进一步地,所述预测单元,包括:
拆分子单元,用于将所述稀疏矩阵拆分成第二预设值个子稀疏矩阵;
分发子单元,用于将每个子稀疏矩阵分发到预设集群的多个节点上;
预测子单元,用于在每个节点上,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵;
生成子单元,用于根据每个节点对应的子完整矩阵生成所述完整矩阵。
进一步地,还包括:
设置单元,用于在所述集群中设置Spark大数据平台;
所述预测子单元,用于在每个节点的Spark大数据平台中,将每个节点上的子稀疏矩阵封装为基于RDD的数组,调用Rating类对所述数组进行封装,生成Rating对象,根据每个节点上的Rating对象的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的Rating对象中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的Rating对象中,生成每个节点对应的子完整矩阵。
进一步地,所述第一预设值为10。
通过本发明提供的一种推荐的方法及装置,通过用户信息、待推荐元素、评价信息建立评价信息的稀疏矩阵,将稀疏矩阵中空的项填充上确定出的值,生成完整矩阵,根据该完整矩阵为用户推荐待推荐元素,该方案中,只需要三类信息即可实现推荐,在生成用于推荐的完整矩阵时,针对每个空的项只需要该项所在的行和列的每一项的值即可确定出该空的项的值,实现推荐的处理过程更加简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种推荐的方法的流程图;
图2是本发明一实施例提供的另一种推荐的方法的流程图;
图3是本发明一实施例提供的一种推荐的装置的示意图;
图4是本发明一实施例提供的另一种推荐的方法的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种推荐的方法,该方法可以包括以下步骤:
S1:获取用户信息、待推荐元素、评价信息的对应关系;
S2:根据所述对应关系建立评价信息的稀疏矩阵;
S3:根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;
S4:根据所述完整矩阵和用户信息,为用户推荐待推荐元素。
通过本发明实施例提供的一种推荐的方法,通过用户信息、待推荐元素、评价信息建立评价信息的稀疏矩阵,将稀疏矩阵中空的项填充上确定出的值,生成完整矩阵,根据该完整矩阵为用户推荐待推荐元素,该方案中,只需要三类信息即可实现推荐,在生成用于推荐的完整矩阵时,针对每个空的项只需要该项所在的行和列的每一项的值即可确定出该空的项的值,实现推荐的处理过程更加简单。
在本发明实施例中,用户信息可以是用户名、用户ID等用户标识,待推荐元素包括:电影、商品等,可以通过名称、ID等标识来表示,评价信息可以是用户对待推荐元素的评分等。每个用户可能无法对所有的待推荐元素都给出对应的评价信息,因此,在建立评价信息的矩阵时,该矩阵的多个元素没有实际的值。针对没有实际的值的空的项,可以将为空的项的初始值设置为0,也可以设置为该空的项所在的行的不为空的项的值的平均值,也可以设置为该空的项所在的列的不为空的项的平均值。
在本发明实施例中,上述稀疏矩阵中,每一行可以是同一个用户对所有待推荐元素的评价信息;每一列可以是对同一个待推荐元素的所有用户的评价信息。该矩阵可以是以下形式:
在一种可能的实现方式中,所述S3,包括:
A1:将所述稀疏矩阵作为待处理矩阵,将所述稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
A2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于所述稀疏矩阵中第s行第i列的项,yjt为位于所述稀疏矩阵中第j行第t列的项,k为所述待处理矩阵的列数,m为所述待处理矩阵的行数,N为所述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
A3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
A4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤A6,否则,执行步骤A5;
A5:将所述中间矩阵作为所述待处理矩阵,返回步骤A2;
A6:将所述中间矩阵作为所述完整矩阵。
其中,所述第一预设值为10。
在该实现方式,通过第一预设值次迭代得到的完整矩阵,能够使得根据该完整矩阵进行的推荐更加符合用户的需求。
另外,在一种可能的实现方式中,A2步骤可以通过以下步骤替换:
根据公式二,确定所述待处理矩阵中每个待预测位置的值,该公式二为:
其中,c为确定出的当前待预测位置的值,p为当前待预测位置所在的行中不为空的项的数量与当前待预测位置所在的列中不为空的项的数量之和,Ai为当前待预测位置所在的行中不为空的项与当前待预测位置所在的列中不为空的项中第i个不为空的项的值;为当前待预测位置所在的行中不为空的项的值与当前待预测位置所在的列中不为空的项的值之和。
为了提高处理速度,在一种可能的实现方式中,所述S3,包括:
B1:将所述稀疏矩阵拆分成第二预设值个子稀疏矩阵;
B2:将每个子稀疏矩阵分发到预设集群的多个节点上;
B3:在每个节点上,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵;
B4:根据每个节点对应的子完整矩阵生成所述完整矩阵。
在该实现方式中,通过集群中的多个节点来协同处理,将稀疏矩阵拆分成多个子稀疏矩阵,将每个子稀疏矩阵分发到多个节点中进行独立的处理,然后,将每个节点处理得到的子完整矩阵进行汇总,拼成完整矩阵。在进行分发子稀疏矩阵时,可以将子稀疏矩阵分发到不同的节点上,也可以在同一个节点上分发多个子稀疏矩阵。
在该实现方式中,可以将稀疏矩阵拆分成d份,其中,d为待推荐元素的特征的数量。举例来说,待推荐元素为电影,电影的特征可以包括:主演、配角、剧情、导演、时长、类别6个特征,则可以将稀疏矩阵拆分成6分。通过这种拆分方法,可以提高处理效率。
在一种可能的实现方式中,该方法还包括:预先在所述集群中设置Spark大数据平台;
所述B3,包括:在每个节点的Spark大数据平台中,将每个节点上的子稀疏矩阵封装为基于RDD的数组,调用Rating类对所述数组进行封装,生成Rating对象,根据每个节点上的Rating对象的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的Rating对象中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的Rating对象中,生成每个节点对应的子完整矩阵。
本发明实施例提供的方法可以在Spark大数据平台上来实现,通过该平台进行处理时,需要将子稀疏矩阵转换成Rating对象的形式。本发明实施例基于SparkRDD实现,利用SparkRDD的分布式特性实现在集群上运行该方法。
本发明实施例提供的方法可以很好的在多台主机或服务器组成的分布式集群上运行,为在大数据场景下推荐的应用提供了解决方案。
在Spark大数据平台上实现该方法,支持在大数据集上进行复杂的查询,能够轻量级的进行高效、快速的处理,支持多语言编程,易于使用,并且兼容性很好,能够与Yarn、Mesos、Hive、HBase、HDFS等多个框架进行很好的兼容。
在Spark大数据平台上,用Scala基于SparkRDD对本发明实施例提供的方法进行重写后,可以将这个方法在集群上的多个节点上实现。
本发明实施例中对应关系可以从关于待推荐元素的数据集中提取出来,以电影为例,获取MovieLens电影数据集,使用sc.textFile方法,将数据集封装成RDD对象,由于该方法只需要用户、电影、评分三类数据,因此,执行获取这三类数据对应的字段即可,可以通过map(x=>x.split(‘\t’).take(3))方法来提取对应的字段,可以根据提取出来的数据生成稀疏矩阵,再将该稀疏矩阵封装成了基于RDD的数组。
上述的调用Rating类对所述数组进行封装,生成Rating对象,可以通过以下代码实现,:valrating=数据集.map(caseArray(user,movie,rating)=>Rating(user.toInt,movie.toInt,rating.toDouble))。
另外,在通过Spark大数据平台实现本发明实施例提供的方法时,可以设置正则化项为0.01。
在步骤S4中,可以根据用户信息确定出该用户信息对应的完整矩阵中的某一行或者某一列,根据该行或者列中每一项的值为用户推荐。举例来说,为用户A推荐2部电影,稀疏矩阵的每一行是同一个用户对所有电影的评分;每一列是对同一个电影的所有用户的评分。在执行步骤S4时,找到用户A在完整矩阵中对应的行,找到该行中评分最高的两部电影,推荐给用户A。
具体地,步骤S4,可以通过以下代码实现:
其中,参数user为用户的编号,num为需要推荐的待推荐元素的数量。
还有,在一种可能的实现方式中,还可以通过待推荐元素之间的相似度来进行推荐。其中,确定待推荐元素之间的相似度可以通过以下代码实现:
importorg.jblas.DoubleMatrix
defsimilar(v1:DoubleMatrix,v2:DoubleMatrix):Double=(
v1.dot(v2)/(v1.norm2()*v2.norm2()))
valitemId
valsimi=res.map{case(id,factor)=>
valfv=newDoubleMatrix(factor)
valsim=similar(fv,res.lookup(itemId))
(id,sim)//返回值
}
在该实现方式中,计算相似度的公式可以是计算余弦相似度。
具体地,当步骤S4中,确定出多个待推荐元素,可以通过该实现方式计算用户当前浏览的待推荐元素与确定出的每个待推荐元素的相似度,将相似度最高的预设值个推荐给用户。举例来说,在步骤S4中,确定出为用户A推荐电影A、电影B、电影C。用户A当前浏览的电影为电影D,则可以通过该实现方式,分别计算电影D与电影A、电影B、电影C的相似度,确定出相似度最高的推荐给用户A。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
在该实施例中,通过一种推荐的方法,为用户推荐电影。这里的用户信息为用户ID,待推荐元素为电影,评价信息为用户对电影的评分。
如图2所示,本发明实施例提供了一种推荐的方法,该方法可以包括以下步骤:
步骤201:预先在预设集群中设置Spark大数据平台。
步骤202:获取用户ID、电影、评分的对应关系。
举例来说,用户A对电影A的评分为5。
步骤203:根据对应关系建立评分的稀疏矩阵。
步骤204:将稀疏矩阵拆分成第二预设值个子稀疏矩阵。
这里可以根据集群的节点数量进行拆分。
步骤205:将每个子稀疏矩阵分发到集群的多个节点上。
步骤206:在每个节点的Spark大数据平台中,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵。
具体地,在每个节点上,可以通过以下步骤实现:
C1:将子稀疏矩阵作为待处理矩阵,将子稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
C2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于子稀疏矩阵中第s行第i列的项,yjt为位于子稀疏矩阵中第j行第t列的项,k为子待处理矩阵的列数,m为子待处理矩阵的行数,N为子述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
C3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
C4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤C6,否则,执行步骤C5;
C5:将所述中间矩阵作为所述待处理矩阵,返回步骤C2;
C6:将所述中间矩阵作为子完整矩阵。
步骤207:根据每个节点对应的子完整矩阵生成完整矩阵。
步骤208:根据完整矩阵和用户ID,为用户推荐电影。
如图3、图4所示,本发明实施例提供了一种推荐的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的一种推荐的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种推荐的装置,包括:
获取单元401,用于获取用户信息、待推荐元素、评价信息的对应关系;
建立单元402,用于根据所述对应关系建立评价信息的稀疏矩阵;
预测单元403,用于根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;
推荐单元404,用于根据所述完整矩阵和用户信息,为用户推荐待推荐元素。
在一种可能的实现方式中,所述预测单元403,具体用于执行:
A1:将所述稀疏矩阵作为待处理矩阵,将所述稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
A2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于所述稀疏矩阵中第s行第i列的项,yjt为位于所述稀疏矩阵中第j行第t列的项,k为所述待处理矩阵的列数,m为所述待处理矩阵的行数,N为所述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
A3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
A4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤A6,否则,执行步骤A5;
A5:将所述中间矩阵作为所述待处理矩阵,返回步骤A2;
A6:将所述中间矩阵作为所述完整矩阵。
在一种可能的实现方式中,所述预测单元403,包括:
拆分子单元,用于将所述稀疏矩阵拆分成第二预设值个子稀疏矩阵;
分发子单元,用于将每个子稀疏矩阵分发到预设集群的多个节点上;
预测子单元,用于在每个节点上,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵;
生成子单元,用于根据每个节点对应的子完整矩阵生成所述完整矩阵。
在一种可能的实现方式中,该装置还包括:
设置单元,用于在所述集群中设置Spark大数据平台;
所述预测子单元,用于在每个节点的Spark大数据平台中,将每个节点上的子稀疏矩阵封装为基于RDD的数组,调用Rating类对所述数组进行封装,生成Rating对象,根据每个节点上的Rating对象的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的Rating对象中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的Rating对象中,生成每个节点对应的子完整矩阵。
在一种可能的实现方式中,所述第一预设值为10。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供的一种推荐的方法及装置,具有如下有益效果:
1、通过本发明实施例提供的一种推荐的方法及装置,通过用户信息、待推荐元素、评价信息建立评价信息的稀疏矩阵,将稀疏矩阵中空的项填充上确定出的值,生成完整矩阵,根据该完整矩阵为用户推荐待推荐元素,该方案中,只需要三类信息即可实现推荐,在生成用于推荐的完整矩阵时,针对每个空的项只需要该项所在的行和列的每一项的值即可确定出该空的项的值,实现推荐的处理过程更加简单。
2、本发明实施例提供的一种推荐的方法及装置,通过集群中的多个节点来协同处理,将稀疏矩阵拆分成多个子稀疏矩阵,将每个子稀疏矩阵分发到多个节点中进行独立的处理,然后,将每个节点处理得到的子完整矩阵进行汇总,拼成完整矩阵,能够提高处理速度。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种推荐的方法,其特征在于,包括:
S1:获取用户信息、待推荐元素、评价信息的对应关系;
S2:根据所述对应关系建立评价信息的稀疏矩阵;
S3:根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;
S4:根据所述完整矩阵和用户信息,为用户推荐待推荐元素。
2.根据权利要求1所述的方法,其特征在于,所述S3,包括:
A1:将所述稀疏矩阵作为待处理矩阵,将所述稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
A2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于所述稀疏矩阵中第s行第i列的项,yjt为位于所述稀疏矩阵中第j行第t列的项,k为所述待处理矩阵的列数,m为所述待处理矩阵的行数,N为所述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
A3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
A4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤A6,否则,执行步骤A5;
A5:将所述中间矩阵作为所述待处理矩阵,返回步骤A2;
A6:将所述中间矩阵作为所述完整矩阵。
3.根据权利要求1所述的方法,其特征在于,所述S3,包括:
B1:将所述稀疏矩阵拆分成第二预设值个子稀疏矩阵;
B2:将每个子稀疏矩阵分发到预设集群的多个节点上;
B3:在每个节点上,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵;
B4:根据每个节点对应的子完整矩阵生成所述完整矩阵。
4.根据权利要求3所述的方法,其特征在于,还包括:预先在所述集群中设置Spark大数据平台;
所述B3,包括:在每个节点的Spark大数据平台中,将每个节点上的子稀疏矩阵封装为基于RDD的数组,调用Rating类对所述数组进行封装,生成Rating对象,根据每个节点上的Rating对象的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的Rating对象中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的Rating对象中,生成每个节点对应的子完整矩阵。
5.根据权利要求2所述的方法,其特征在于,所述第一预设值为10。
6.一种推荐的装置,其特征在于,包括:
获取单元,用于获取用户信息、待推荐元素、评价信息的对应关系;
建立单元,用于根据所述对应关系建立评价信息的稀疏矩阵;
预测单元,用于根据所述稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定所述稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到所述稀疏矩阵中,生成完整矩阵;
推荐单元,用于根据所述完整矩阵和用户信息,为用户推荐待推荐元素。
7.根据权利要求1所述的装置,其特征在于,所述预测单元,具体用于执行:
A1:将所述稀疏矩阵作为待处理矩阵,将所述稀疏矩阵中空的项所在的位置作为待预测位置,设置迭代次数为0;
A2:根据公式一,确定所述待处理矩阵中每个待预测位置的值,所述公式一为:
其中,当前待预测位置为第s行与第t列确定的位置,xsi为位于所述稀疏矩阵中第s行第i列的项,yjt为位于所述稀疏矩阵中第j行第t列的项,k为所述待处理矩阵的列数,m为所述待处理矩阵的行数,N为所述稀疏矩阵的第s行中项的数量,b为确定出的当前待预测位置的值;
A3:将确定出的每个待预测位置的值填充到所述待处理矩阵中,生成中间矩阵;
A4:将迭代次数加一,判断迭代次数是否大于等于第一预设值,如果是,则执行步骤A6,否则,执行步骤A5;
A5:将所述中间矩阵作为所述待处理矩阵,返回步骤A2;
A6:将所述中间矩阵作为所述完整矩阵。
8.根据权利要求6所述的装置,其特征在于,所述预测单元,包括:
拆分子单元,用于将所述稀疏矩阵拆分成第二预设值个子稀疏矩阵;
分发子单元,用于将每个子稀疏矩阵分发到预设集群的多个节点上;
预测子单元,用于在每个节点上,根据每个节点上的子稀疏矩阵的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的子稀疏矩阵中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的子稀疏矩阵中,生成每个节点对应的子完整矩阵;
生成子单元,用于根据每个节点对应的子完整矩阵生成所述完整矩阵。
9.根据权利要求8所述的装置,其特征在于,还包括:
设置单元,用于在所述集群中设置Spark大数据平台;
所述预测子单元,用于在每个节点的Spark大数据平台中,将每个节点上的子稀疏矩阵封装为基于RDD的数组,调用Rating类对所述数组进行封装,生成Rating对象,根据每个节点上的Rating对象的每个空的项所在的行和所在的列中的每一项的值,确定每个节点上的Rating对象中每个空的项的值,将确定出的每个空的项的值填充到每个节点上的Rating对象中,生成每个节点对应的子完整矩阵。
10.根据权利要求7所述的装置,其特征在于,所述第一预设值为10。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510895722.2A CN105550240B (zh) | 2015-11-30 | 2015-11-30 | 一种推荐的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510895722.2A CN105550240B (zh) | 2015-11-30 | 2015-11-30 | 一种推荐的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550240A true CN105550240A (zh) | 2016-05-04 |
CN105550240B CN105550240B (zh) | 2018-11-27 |
Family
ID=55829429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510895722.2A Active CN105550240B (zh) | 2015-11-30 | 2015-11-30 | 一种推荐的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550240B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107623688A (zh) * | 2017-09-15 | 2018-01-23 | 杭州美创科技有限公司 | 用户网络安全配置推荐方法 |
CN109828750A (zh) * | 2019-01-09 | 2019-05-31 | 西藏纳旺网络技术有限公司 | 自动配置数据埋点的方法、装置、电子设备及存储介质 |
CN109936770A (zh) * | 2019-04-19 | 2019-06-25 | 杭州联汇科技股份有限公司 | 一种基于矩阵在线补全和节目特征的节目推荐方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104079960A (zh) * | 2013-12-05 | 2014-10-01 | 深圳市腾讯计算机系统有限公司 | 文件推荐方法和装置 |
CN104123847A (zh) * | 2014-07-31 | 2014-10-29 | 中国科学院自动化研究所 | 基于acp方法的交通信号推荐系统及相应方法 |
US20150310529A1 (en) * | 2014-04-28 | 2015-10-29 | Microsoft Corporation | Web-behavior-augmented recommendations |
-
2015
- 2015-11-30 CN CN201510895722.2A patent/CN105550240B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104079960A (zh) * | 2013-12-05 | 2014-10-01 | 深圳市腾讯计算机系统有限公司 | 文件推荐方法和装置 |
US20150310529A1 (en) * | 2014-04-28 | 2015-10-29 | Microsoft Corporation | Web-behavior-augmented recommendations |
CN104123847A (zh) * | 2014-07-31 | 2014-10-29 | 中国科学院自动化研究所 | 基于acp方法的交通信号推荐系统及相应方法 |
Non-Patent Citations (1)
Title |
---|
高凤荣等: "一种基于稀疏矩阵划分的个性化推荐算法", 《微电子学与计算机》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107623688A (zh) * | 2017-09-15 | 2018-01-23 | 杭州美创科技有限公司 | 用户网络安全配置推荐方法 |
CN109828750A (zh) * | 2019-01-09 | 2019-05-31 | 西藏纳旺网络技术有限公司 | 自动配置数据埋点的方法、装置、电子设备及存储介质 |
CN109828750B (zh) * | 2019-01-09 | 2022-07-19 | 西藏纳旺网络技术有限公司 | 自动配置数据埋点的方法、装置、电子设备及存储介质 |
CN109936770A (zh) * | 2019-04-19 | 2019-06-25 | 杭州联汇科技股份有限公司 | 一种基于矩阵在线补全和节目特征的节目推荐方法 |
CN109936770B (zh) * | 2019-04-19 | 2021-04-27 | 杭州联汇科技股份有限公司 | 一种基于矩阵在线补全和节目特征的节目推荐方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105550240B (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413877A (zh) | 一种资源推荐方法、装置及电子设备 | |
CN110648185B (zh) | 一种目标人群圈选方法、装置及计算机设备 | |
CN103473230B (zh) | 服务范围确定方法、物流服务提供方推荐方法及相应装置 | |
CN109934721A (zh) | 理财产品推荐方法、装置、设备及存储介质 | |
CN103942712A (zh) | 基于产品相似度的电子商务推荐系统及其方法 | |
CN105989004A (zh) | 一种信息投放的预处理方法和装置 | |
CN110209922A (zh) | 对象推荐方法、装置、存储介质及计算机设备 | |
CN106708996A (zh) | 用于对关系数据库进行全文搜索的方法及系统 | |
CN105930469A (zh) | 基于Hadoop的个性化旅游推荐系统及方法 | |
CN105096152A (zh) | 一种基于商品热度的操作执行方法及装置 | |
CN109255564A (zh) | 一种取件点地址推荐方法及装置 | |
CN105488366A (zh) | 一种数据权限的控制方法和系统 | |
WO2022140900A1 (zh) | 个人知识图谱构建方法、装置及相关设备 | |
CN104079960A (zh) | 文件推荐方法和装置 | |
CN106202088A (zh) | 一种匹配业务场景的方法和系统 | |
CN109242592A (zh) | 一种应用的推荐方法和装置 | |
CN103365842B (zh) | 一种页面浏览推荐方法及装置 | |
CN109977312A (zh) | 一种基于内容标签的知识库推荐系统 | |
CN111291191A (zh) | 一种广电知识图谱构建方法及装置 | |
CN105550240A (zh) | 一种推荐的方法及装置 | |
CN111340522B (zh) | 资源推荐方法、装置、服务器及存储介质 | |
CN108268519A (zh) | 一种推荐网络对象的方法和装置 | |
CN104123321A (zh) | 一种确定推荐图片的方法及装置 | |
CN105138684A (zh) | 一种信息处理方法和信息处理装置 | |
CN106649315A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |