基于隐式反馈协同过滤算法的推荐系统及方法

xiaoxiao2021-2-28  206

基于隐式反馈协同过滤算法的推荐系统及方法
【技术领域】
[0001] 本发明涉及互联网技术领域,尤其涉及一种基于隐式反馈协同过滤算法的推荐系 统及方法。
【背景技术】
[0002] 电子商务领域中,随着商品越来越丰富,品类越来越多,人们从海量的商品里找到 自己感兴趣商品的时间成本越来越高。为解决这个问题,有效指导用户在电子商务网站中 购物,电子商务推荐系统应运而生。电子商务推荐系统可以根据已有的用户信息,向目标用 户推荐其可能感兴趣的产品信息。然而,随着移动互联网的到来,以大不同于PC时代的产品 形态面向用户,商品的展现形式及用户购物的习惯已呈一个全新的局面,营销如何更精准、 市场投放如何有更高的回报、长尾商品如何有更多的机会去展现从而提升转化,这些问题 都是商家和电子商务平台目前面临的重大难题,也正是推荐系统亟待解决的问题。发明人 发现目前的推荐系统存在以下缺陷:
[0003] 目前,推荐系统常用算法主要包括三类:基于内容的推荐算法、协同过滤推荐算 法、基于关联规则的推荐算法。其中被广泛使用的是协同过滤算法,常用的协同过滤主要分 为基于用户的协同过滤和基于商品的协同过滤。基于用户的协同过滤推荐根据相似用户群 的观点来产生对目标用户的推荐,使用统计方法挑选出与目标用户最相似的若干用户,称 为"邻居",然后根据这些邻居对与目标商品相似的商品的评分来推测用户对目标商品的感 兴趣程度;基于产品的协同过滤推荐是根据用户对与目标商品相似的商品的评分来预测该 用户对目标商品的感兴趣程度。显然,无论是哪种协同过滤,数据都是基于用户对于商品的 评分,评分通常是用户对商品的浏览次数、点击次数、购买次数等转换而来的显示数据,在 这其中,基于用户的协同过滤和基于商品的协同过滤都没有考虑用户的噪声行为,例如用 户购买某件商品可能是送给自己的朋友,或者点击某个商品可能只是无意点中偶然产生的 行为,使得直接使用这种评分类数据会给用户的这些噪声行为更高的权重,而不能反映用 户真实的兴趣,导致推荐效果不佳。
[0004] 另外,在集群受限及算法实现框架的限制下,大部分的推荐系统会采用单机运算, 不仅效率不高,而且没办法利用更丰富的数据去建模,推荐效果也会大打折扣。

【发明内容】

[0005] 本发明的目的在于提供一种基于Spark隐式反馈协同过滤算法的产品推荐系统及 方法,在计算资源有限的环境下,大大提升推荐数据计算效率和推荐效果。
[0006] 为解决上述问题,本发明提出一种基于隐式反馈协同过滤算法的推荐方法,包括:
[0007] 步骤1),根据一电子商务网站上的历史用户访问信息,抽取一段时间内的用户跳 转行为记录,形成训练数据集;
[0008] 步骤2),根据所述训练数据集调整隐式反馈协同过滤算法基本模型的参数,生成 预测模型;
[0009] 步骤3),根据该电子商务网站的集群的计算能力把用户分组,整合用户与被推荐 的产品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测出每组用户的产品 偏好,形成推荐结果;
[0010] 步骤4),将所述推荐结果索引入所述电子商务网站的搜索引擎中。
[0011] 进一步的,所述电子商务网站为能够链接产品直属的电子商务网站的第三方电子 商务网站。
[0012]进一步的,所述步骤1)包括:
[0013] 步骤1.1)先通过所述电子商务网站的生产服务器的日志采集系统采集本地日志, 再从所述本地日志中获取用户跳转行为数据后,存入所述生产服务器的消息系统,再由所 述消息系统输出存放于所述集群中;
[0014] 步骤1.2)建立用户与跳转行为的数据模型表,按照一预定义规则对所述数据模型 表进行分区;
[0015] 步骤1.3)通过分区的数据模型表,并行抽取用户一段时间内的跳转记录,汇总生 成训练数据集。
[0016] 进一步的,所述日志采集系统为flume系统,所述消息系统为Kafka系统,所述集群 为Spark集群,所述数据模型表为hive模型表。
[0017]进一步的,所述步骤2)包括:
[0018] 步骤2.1),设置好用户对产品的评分维度,建立评分矩阵,形成隐式反馈协同过滤 算法基本模型;
[0019] 步骤2.2),根据所述集群的计算能力,设置隐式反馈协同过滤算法的参数值以及 目标跳转率,并采用所述训练数据集训练所述基本模型;
[0020] 步骤2.3),根据每次训练结果反复调整各所述参数值,使得产品跳转率达到所述 目标跳转率,以获得所述预测模型。
[0021] 进一步的,所述步骤3)包括:
[0022] 步骤3.1),将所述电子商务网站的用户拆分成多组,并将每组用户按一次计算Μ个 用户的方式进行用户集合与被推荐产品集合的笛卡尔积运算,生成预测数据集;
[0023] 步骤3.2),所述集群基于所述预测模型对所述预测数据集进行并行运算,每次并 行运算Ν个预测任务,能获得Μ*Ν个用户的推荐结果。
[0024]进一步的,所述步骤4)包括:
[0025] 步骤4.1),所述集群的每个分区各自计算,且每个分区分别建立与所述搜索引擎 的链接,并通过所述搜索引擎的用户接口,实时将运算所得的推荐结果索引入所述搜索引 擎中;
[0026] 步骤4.2)所述搜索引擎预设有用于提交推荐结果的索引文档数量及提交时间,以 自动提交每个推荐结果的索引。
[0027] 进一步的,所述搜索引擎为Solr搜索引擎。
[0028] 本发明还提供一种基于隐式反馈协同过滤算法的推荐系统,包括:
[0029] 数据采集模块,用于根据一电子商务网站上的历史用户访问信息,抽取一段时间 内的用户跳转行为记录,形成训练数据集;
[0030] 模型训练模块,用于根据所述训练数据集调整隐式反馈协同过滤算法基本模型的 参数,生成预测模型;
[0031] 并行预测模块,用于根据该电子商务网站的集群的计算能力把用户分组,整合用 户与被推荐的产品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测每组用 户的产品偏好,形成推荐结果;
[0032] 推荐显示模块,用于将所述推荐结果索引入所述电子商务网站的搜索引擎中。
[0033] 进一步的,所述数据采集模块通过所述电子商务网站的生产服务器的日志采集系 统采集本地日志,以获取用户跳转行为数据,并用于建立用户与跳转行为的数据模型表,所 述数据采集模块按照一预定义规则对所述数据模型表进行分区,并通过分区的数据模型表 来并行抽取用户一段时间内的跳转记录,汇总生成训练数据集,并通过所述生产服务器的 消息系统将所述训练数据集存入所述集群中;
[0034] 所述模型训练模块包括:基本模型设置单元,用于设置好用户对产品的评分维度, 建立评分矩阵,形成基本模型;模型训练单元,用于根据所述集群的计算能力,设置隐式反 馈协同过滤算法的参数值以及目标跳转率,并采用所述训练数据集训练所述基本模型;预 测模型生成单元,用于根据每次训练结果反复调整所述参数值,使得产品跳转率达到所述 目标跳转率,得到所述预测模型;
[0035] 所述并行预测模块包括:分组单元,用于将所述电子商务网站的用户拆分成多组, 并根据所述集群的并行运算能力进行用户集合和被推荐产品集合的笛卡尔积运算,生成所 述的预测数据集;预测单元,用于基于所述预测模型,并根据所述集群的并行运算能力对多 个预测数据集进行并行运算,以获得推荐结果。
[0036] 与现有技术相比,本发明提供的基于隐式反馈协同过滤算法的推荐系统及方法, 将用户的跳转行为作为产品评分的一种参考,合理调整训练模型参数,大大提升了推荐效 果;同时利用用户分组实现集群的并行运算,在计算资源有限的环境下,大大提升了计算效 率。经发明人检验,8000万用户的离线推荐运算以小型集群的计算能力可以在24小时内计 算完成,且实现了产品跳转率达到60%以上的实际推荐效果。
【附图说明】
[0037] 图1是本发明具体实施例的基于隐式反馈协同过滤算法的推荐方法流程图;
[0038] 图2是图1所示的推荐方法中的并行化运算流程图; [0039] 图3是图1所示的推荐方法的获得预测模型过程中,当迭代次数固定时,商品跳转 率随rank取值的变化曲线图;
[0040] 图4是图1所示的推荐方法的获得预测模型过程中,当rank值固定时,商品跳转率 随迭代次数取值的变化曲线图;
[0041] 图5是本发明具体实施例的基于隐式反馈协同过滤算法的推荐系统的结构示意 图。
【具体实施方式】
[0042]为使本发明的目的、特征更明显易懂,下面结合附图对本发明的【具体实施方式】作 进一步的说明,然而,本发明可以用不同的形式实现,不应只是局限在所述的实施例。
[0043]请参考图1,本发明提出一种基于隐式反馈协同过滤算法的推荐方法,包括以下步 骤:
[0044] SI,根据一电子商务网站上的历史用户访问信息,抽取一段时间内的用户跳转行 为记录,形成训练数据集;
[0045] S2,根据所述训练数据集调整隐式反馈协同过滤算法基本模型的参数,生成预测 丰旲型;
[0046] S3,根据该电子商务网站的集群的计算能力把用户分组,整合用户与被推荐的产 品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测出每组用户的产品偏 好,形成推荐结果;
[0047] S4,将所述推荐结果索引入所述电子商务网站的搜索引擎中。
[0048]下面以该图1所示的推荐方法直接被应用于返利网站这种第三方电子商务网站来 说明本发明的发明目的、技术方案和技术效果。其中,返利是厂家或供货商为了刺激销售, 提高经销商(或代理商)的销售积极性而采取的一种正常商业操作模式。随着电子商务的发 展,网上购物正成为一种流行的消费福利方式,大多数的网上商城(即商品直属的电子商务 网站)为了促进产品销量,将一部分利润分给推广者,而推广者又将利润返还给消费者,从 而滋生了一个新生的行业---返还利润平台,也就是返利网站。返利网站属于CPS(商品推广 解决方案)中的一种,主要是按销量分成的方式付费。该返利网站有自己的服务器平台以及 搜索引擎,自身并不出售商品,其一种应用场景是,用户可以在该返利网站的搜索引擎的用 户接口,输入自己想要关注的商品的名称或关键字/词等信息,该返利网站的搜索引擎会根 据这些信息向用户提供相应的搜索推荐结果(即商品的推荐列表);另一种应用场景是,只 要用户登录该返利网站,就可以通过该返利网站首页上的用户接口,例如"猜你喜欢"的入 口,就可以立刻看到该返利网站给该用户的商品推荐列表。不管哪种应用场景,只要用户点 阅推荐列表中相应的商品时,返利网站会直接为跳转到该商品直属的网上商城,从而实现 该商品的购买,在该商品的购买交易成功完成后,返利网站会向用户返还一定的利润。显 然,返利网站本身的推荐系统如果推荐效果较好的话,让用户能及时看到最新的推荐商品, 极大的增加商品跳转率。因此,本发明的技术方案采用用户跳转记录作为显示数据,从而计 算出用户对产品的隐式置信度,以此建模,得到了更好的推荐效果。因此本实施例返利网站 的具体推荐方法如下:
[0049] 步骤S1:根据一返利网站上的历史用户访问信息,抽取一段时间内的用户跳转行 为记录,形成训练数据集,具体过程包括:
[0050] 步骤1.1)所述返利网站的每台生产服务器,通过flume(即一种分布式日志采集系 统)采集本地日志(即其中包括各个用户访问返利网站的信息以及各个用户通过该返利网 站跳转到相关的网上商城的行为记录信息),并将该日志存入Kafka(-种高吞吐量的分布 式发布订阅消息系统)的消息队列中,再由Kafka的消费端输出并存放于Spark集群中;
[0051] 步骤1.2)在Spark集群上,建立用户跳转行为记录的hive模型表(即用户与其感兴 趣的商品的关联数据模型表),按天及小时(即一预定义规则)对用户跳转行为数据进行分 区,可进一步地过滤hive模型表中的噪声数据;
[0052] 步骤1.3)通过hive模型表,按天并行抽取用户一段时间内的跳转记录,最后汇总, 生成训练数据集。例如采用最近30天内的用户跳转行为记录,每天一个hive模型表查询,并 行抽取用户跳转记录,通常半小时内就可以全部抽取完毕;汇总抽取出的所有用户数据记 为data文件,从中抽取出用户列表,生成user文件,从商品数据库中抽取当天商品生成item 文件;将data文件、user文件,item文件上传至Spark集群指定目录中。
[0053]其中,Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、 聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时, Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。kafka是一种高 吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键 因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决,kafka的目的 是通过Spark框架的分布式文件系统的并行加载机制来统一线上和离线的消息处理,也是 为了通过集群机来提供实时的消费,Spark是新一代大数据分布式处理框架,这一框架可运 行在Hadoop Yarn(-种分布式计算存储平台)之上,以解决大数据的问题,Spark ML(分布 式机器学习系统)提供了分布式的隐式反馈协同过滤算法,使得集群运算成为可能。
[0054] S2,根据所述训练数据集调整隐式反馈协同过滤算法基本模型的参数,生成预测 模型,具体包括:
[0055]步骤2.1)采用Spark所实现的隐式反馈协同过滤算法,并利用训练数据集,建立用 户商品的评分矩阵,作为基本模型,用户商品的评分矩阵可以如下:
[0057]该矩阵中每一行U代表一个用户,每一列I代表一个商品。矩阵中已有的每个值代 表相对应的用户对商品的评分,是训练数据集中已知的训练数据,而矩阵中的空白项就是 我们要求解的预测得分。区别于显示计算,隐式计算将用户对商品的跳转次数转化为置信 度,置信度计算公式为:Cm = l+al〇g( l+m/ε),其中(^表示用户U对商品I的置信度,rui表示 用户U对商品I的跳转次数,取对数使得跳转次数少的与跳转次数多的计算所得(^相差不会 太大,常数ε修正rm,当 Γυ?较小时取对数所得值不会趋近于0,方便计算。
[0058] 然而,现实中商品种类繁多,用户并不会关注商品的所有特征,用户对商品的喜好 描述基本上是在一个低维的空间,因此上述评分矩阵一般是低秩的。我们假定k个特征可以 描述用户关注的特征以及商品本身的特征,那么用户U对商品I的评分可以计算为 ΧινΥ?均是k维的。那么评分矩阵可以用维度较小的两个矩阵U(m*k)V(n*k)的乘积来近似: UVT。
[0059] 步骤2.2)根据集群计算能力,设置隐式反馈协同过滤算法需要的用户、商品维度 (rank)、置信度计算公式中的a、训练迭代次数以及所采用的损失函数的参数λ等以及目标 跳转率,并采用已知训练数据来训练基本模型以获得预测模型,具体地:
[0060] 在利用基本模型进行模型训练来获得预测模型的过程中所采用的损失函数为:
[0062] 其中,Xu为用户U特征向量,XTuSXu转置,Y〗为商品I的特征向量,XVY〗为用户U对商 品I的预测得分,即通过训练模型计算出来的用户U对商品I的预测得分。损失函数最小,即 为所求得的最优训练模型。求解最优模型的过程就转变为求解最优化问题了。由于我们只 知道训练数据集的真实得分,所以求解最优化问题近似为由已知训练数据集所求得的损失 函数值最小的问题,求解此最优化问题,Spark ML采用了ALS(交替最小二乘),即固定一个 变量,求解另外一个变量。比如,固定U,去求解V。初始化U0去求解V0,固定V0去求解U1,如此 不断的迭代下去,直到收敛到某一值,即以步骤S1中获得的data,user,item文件作为输入, 固定一个变量U(或V),求解另外一个变量V(或U)。
[0063] 步骤2.3),根据每次训练结果反复调整各所述参数值,使得商品跳转率达到所述 目标跳转率,以获得所述预测模型,其中,商品跳转率=(点击商品跳转到商品直属网上商 城的用户数)/(进入商品所在推荐列表页的用户总数)。具体地,Spark隐式反馈协同过滤算 法参数经过实际效果验证调整为:α取值为40,λ取值〇.〇1,模型迭代次数为50次,特征数量 (rank值)取为150。实际训练30天内数据,3小时内可以训练完成。目前推荐设置与具体应用 场景有关,参数调整效果对比如图3与图4。
[0064] S3,根据该电子商务网站的集群的计算能力把用户分组,整合用户与被推荐的产 品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测出每组用户的产品偏 好,形成推荐结果。由于spark集群受限,每个spark应用的计算能力有限,为了提升运算效 率,需要多个spark应用并行计算,因此,步骤S3具体包括:
[0065] 步骤3.1)将用户拆分成K组,每组分别运算,以生成预测数据集。生成预测数据集 需要将用户集合与商品集合进行笛卡尔积的运算,产生的中间结果会占用大量的内存,因 此每组用户不能一次全部进行运算,所以将每组用户按一次计算Μ个用户的方式进行运算, 计算完成后释放此次运算占用的内存,即将每组用户按一次计算Μ个用户的方式进行用户 集合与被推荐产品集合的笛卡尔积运算,生成预测数据集。具体举例说明如下:将用户按 100万一批进行分组,假如返利网站的总用户为8000万,则用户被分成80组,每组用户数100 万,总任务数为80;而假如该返利网站的Spark集群计算能力的并行度是20,每次只可以同 时并行运算20个Spark应用,一个任务完成后马上启动一个新的任务开始运算,直到所有80 个任务运算完成;一个Spark应用即对应一个任务,该任务(即该分组)中的用户是顺序计算 的,每次能对该任务(即该分组)中的5000个用户进行一次性计算,即每组100万个用户,一 个Spark应用一次可以计算5000个用户,则需计算200次才能彻底执行完成,也就是说一个 任务需要计算200次才能彻底完成。例如,该返利网站有20000件被推荐商品,一个Spark应 用一次可以计算5000用户与20000件商品的笛卡尔积,顺序计算完100万用户与20000件商 品的笛卡尔积,共运算200次,这个任务才算完成。
[0066] 步骤3.2)Spark集群一次可以并行运行N个Spark应用,同时每个Spark应用可以计 算Μ个用户对各个商品的预测得分,则每次并行运算可以计算M*N个推荐结果。因此Spark集 群并行运算进行预测得分的具体过程,如图2所示,包括:根据总用户数Q和分组时的每组用 户数S,计算总任务数Q/S,例如,返利网站的总用户为8000万,则用户被分成80组,每个分组 有100万用户,则总任务数为80;获取当前正在执行的任务数i;计算当前可启动的Spark应 用数η,启动η个新任务(即η个Spark应用),Spark集群每次只能并行启动N个Spark应用进行 预测得分计算,N=i+n。而每个Spark应用可以一次计算Μ个用户与所有商品的笛卡尔积运 算,贝每次计算可以并行运算出Μ*Ν个推荐结果,例如当Ν = 20、Μ = 5000时,Spark集群每次 可以并行计算出10万个推荐结果,且每当有一个Spark应用执行完成后,并行化调度程序才 会启动下一个Spark应用,例如当每个任务的分组中有100万用户时,执行一个任务即启动 一个Spark应用,按照每个Spark应用一次计算5000个用户的计算能力,每个Spark应用需计 算200次才能执行完成。每当有一个Spark应用运行结束后,并行化调度程序会启动一个新 的Spark应用进行运算,即分配和启动下一个新的任务,直到所有任务完成。假如所有的 Spark应用的计算速度是相同的,则该Spark集群每次并行分配20个任务,即每次并行运行 20个Spark应用,20个Spark应用同时分别计算200次,最终可以计算出20*100万个推荐结 果,而8000万用户共分成的80个任务,仅需要该Spark集群并行分配任务4次,就可以全部完 成。经检验,以该Spark集群的计算能力,8000万用户的推荐结果可以在24小时内运算完成。
[0067] S4,将所述推荐结果索引入所述电子商务网站的搜索引擎中。其中,每个用户的推 荐列表,存放于该返利网站的搜索引擎中,便于用户实时查询。此外,离线运算与生产实时 查询解耦,保证生产环境的稳定性。搜索引擎可以是Solr搜索引擎,Solr是一个独立的企业 级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向 搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请 求,并得到XML格式的返回结果。以Solr为例,步骤S4具体包括:
[0068] 步骤4 · 1) Spark集群的每个Part ition (分区)各自计算,每个Par t i t i on (分区)分 别建立与Solr的链接,通过Solr Client(客户端)接口,每个partition各自将计算用户及 其推荐商品列表索引进搜索引擎,每个Spark partition(分区)只管通过接口添加索引文 档,实时索引入Solr搜索引擎,其中,每个用户的推荐商品列表是由模型对预测数据集做出 预测得分(即评分)后,按评分高低排序,选取评分靠前的1000个商品列表形成的;
[0069]步骤4.2)在每个Spark partition(分区)将用户及其推荐商品列表索引入搜索引 擎之前,还要先建立Solr推荐列表索引实例,设置索引方式为autocommit(自动提交),设置 合理的autocommit索引文档数量及提交时间,从而实现每个Spark partition通过接口自 动添加索引文档的效果,这种自动提交的方式,可以避免直接提交索引时不必要的提交等 待时间,进而保证搜索引擎的索引及查询效率,减少耗时。例如每次最大提交索引文档数为 50000,最大提交时间间隔为5分钟。
[0070]经验证,应用本发明的基于Spark隐式反馈协同过滤算法实现的商品推荐方法的 返利网站,在其计算集群资源有限的环境下,大大提升了推荐商品列表的计算效率,且基于 其生产实际环境以及该返利网站的真实用户行为记录,按本发明实施,8000万用户的离线 推荐运算可以在24小时内计算完成,且实现了商品跳转率达到60%以上的实际推荐效果。
[0071] 请参考图5,本发明还提供一种基于隐式反馈协同过滤算法的推荐系统,该系统可 以在Spark框架上实现,包括以下功能:
[0072] 数据采集模块51,用于根据一电子商务网站上的历史用户访问信息,抽取一段时 间内的用户跳转行为记录,形成训练数据集;
[0073] 模型训练模块52,用于根据数据采集模块51中的所述训练数据集产生调整隐式反 馈协同过滤算法基本模型的参数,生成预测模型;
[0074]并行预测模块53,用于根据该电子商务网站的集群的计算能力把数据采集模块51 中采集的所有用户分组,并整合用户与所有被推荐的产品,生成多个预测数据集,并利用所 述预测模型进行并行运算,预测每组用户的产品偏好,形成推荐结果;
[0075]推荐显示模块54,用于将并行预测模块53的所述推荐结果索引入所述电子商务网 站的搜索引擎中。
[0076] 本实施例中,所述数据采集模块51通过所述电子商务网站的生产服务器的日志采 集系统采集本地日志以获取用户跳转行为数据,并用于建立用户与商品跳转行为的数据模 型表,并按照一预定义规则(例如按天和小时)对用户跳转行为数据进行分区,通过所述数 据模型表来并行抽取用户一段时间内(例如30天内)的跳转记录,汇总生成训练数据集,并 通过所述生产服务器的消息系统将所述训练数据集存入所述集群中,其中,所述日志采集 系统为flume系统,所述消息系统为Kafka系统,所述集群为Spark集群,所述数据模型表为 hive模型表。
[0077] 所述模型训练模块52包括:基本模型设置单元521,用于设置好用户对产品的评分 维度,建立评分矩阵,形成基本模型;模型训练单元522,用于根据所述集群的计算能力,设 置隐式反馈协同过滤算法的参数值以及目标跳转率,并采用所述训练数据集训练所述基本 模型;预测模型生成单元523,用于根据每次训练结果反复调整所述参数值,使得产品跳转 率达到所述目标跳转率 ,得到所述预测模型;
[0078] 所述并行预测模块53包括:分组单元531,用于将所述电子商务网站的用户拆分成 多组,并根据所述集群的并行运算能力进行用户集合和被推荐产品集合的笛卡尔积运算, 生成所述的预测数据集;预测单元532,用于基于所述预测模型,并根据所述集群的并行运 算能力对多个预测数据集进行并行运算,以获得推荐结果。
[0079]所述推荐显示模块54包括:设置单元541,用于建立所述电子商务网站搜索引擎的 推荐列表索引实例,以及设置自动提交索引方式和每次自动提交时合理的索引文档数量及 提交时间,例如每次最大提交索引文档数为50000,最大提交时间间隔为5分钟;索引提交单 元,用于建立搜索引擎与每个Spark Part it ion (分区)的链接,使得每个part it ion (分区) 通过接口添加索引文档的方式各自将计算用户及其推荐商品列表自动实时索引进搜索引 擎,其中,每个用户的推荐商品列表可以是由模型对预测数据集做出预测得分(即评分)后, 按评分高低排序,选取评分靠前的1000个商品列表形成的。
[0080] 本发明的推荐系统是基于Spark隐式反馈协同过滤算法实现的推荐系统,在计算 资源有限的环境下,不但可以通过数据采集模块51和模型训练模块52应用海量的用户行为 数据,而且还可以通过并行预测模块53中的并行运算来大大提升计算效率和实现离线运 算,并通过推荐显示模块54实时索引,是一种基于大数据的推荐系统。此外,合理调整模型 训练模块52训练模型时的相关参数,能够提高预测评分的可靠性,从而可以大大提升按评 分高低排列形成的推荐列表页的产品跳转率(或称用户跳转率)。
[0081] 需要说明的是,虽然本发明上述的具体实施例以Spark这一框架上的推荐系统为 例来具体说明了本发明的发明目的、技术方案和技术效果,但本发明的保护范围并不仅限 于Spark框架,而是可以扩展到任何能够支持隐式反馈协同过滤算法、且同时具有集群并行 运算能力的大数据处理框架,例如Nectar、HaLoop、Twister、Samza以及Storm等,都是类似 于Spark的大数据处理框架,这些框架也能够实现本发明的发明目的,达到本发明的技术效 果。
[0082]显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神 和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之 内,则本发明也意图包含这些改动和变型在内。
【主权项】
1. 一种基于隐式反馈协同过滤算法的推荐方法,其特征在于,包括: 步骤1),根据一电子商务网站上的历史用户访问信息,抽取一段时间内的用户跳转行 为记录,形成训练数据集; 步骤2),根据所述训练数据集调整隐式反馈协同过滤算法基本模型的参数,生成预测 丰旲型; 步骤3),根据该电子商务网站的集群的计算能力把用户分组,整合用户与被推荐的产 品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测出每组用户的产品偏 好,形成推荐结果; 步骤4),将所述推荐结果索引入所述电子商务网站的搜索引擎中。2. 根据权利要求1所述的推荐方法,其特征在于,所述电子商务网站为能够链接产品直 属的电子商务网站的第三方电子商务网站。3. 根据权利要求1或2所述的推荐方法,其特征在于,所述步骤1)包括: 步骤1.1)先通过所述电子商务网站的生产服务器的日志采集系统采集本地日志,再从 所述本地日志中获取用户跳转行为数据后,存入所述生产服务器的消息系统,再由所述消 息系统输出存放于所述集群中; 步骤1.2)建立用户与跳转行为的数据模型表,按照一预定义规则对所述数据模型表进 行分区; 步骤1.3)通过分区的数据模型表,并行抽取用户一段时间内的跳转记录,汇总生成训 练数据集。4. 根据权利要求3所述的推荐方法,其特征在于,所述日志采集系统为flume系统,所述 消息系统为Kafka系统,所述集群为Spark集群,所述数据模型表为hive模型表。5. 根据权利要求1所述的推荐方法,其特征在于,所述步骤2)包括: 步骤2.1 ),设置好用户对产品的评分维度,建立评分矩阵,形成隐式反馈协同过滤算法 基本模型; 步骤2.2),根据所述集群的计算能力,设置隐式反馈协同过滤算法的参数值以及目标 跳转率,并采用所述训练数据集训练所述基本模型; 步骤2.3),根据每次训练结果反复调整各所述参数值,使得产品跳转率达到所述目标 跳转率,以获得所述预测模型。6. 根据权利要求1所述的推荐方法,其特征在于,所述步骤3)包括: 步骤3.1),将所述电子商务网站的用户拆分成多组,并将每组用户按一次计算Μ个用户 的方式进行用户集合与被推荐产品集合的笛卡尔积运算,生成预测数据集; 步骤3.2),所述集群基于所述预测模型对所述预测数据集进行并行运算,每次并行运 算Ν个预测任务,能获得Μ*Ν个用户的推荐结果。7. 根据权利要求1或6所述的推荐方法,其特征在于,所述步骤4)包括: 步骤4.1),所述集群的每个分区各自计算,且每个分区分别建立与所述搜索引擎的链 接,并通过所述搜索引擎的用户接口,实时将运算所得的推荐结果索引入所述搜索引擎中; 步骤4.2)所述搜索引擎预设有用于提交推荐结果的索引文档数量及提交时间,以自动 提交每个推荐结果的索引。8. 根据权利要求7所述的推荐方法,其特征在于,所述搜索引擎为Solr搜索引擎。9. 一种基于隐式反馈协同过滤算法的推荐系统,其特征在于,包括: 数据采集模块,用于根据一电子商务网站上的历史用户访问信息,抽取一段时间内的 用户跳转行为记录,形成训练数据集; 模型训练模块,用于根据所述训练数据集调整隐式反馈协同过滤算法基本模型的参 数,生成预测模型; 并行预测模块,用于根据该电子商务网站的集群的计算能力把用户分组,整合用户与 被推荐的产品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测每组用户的 产品偏好,形成推荐结果; 推荐显示模块,用于将所述推荐结果索引入所述电子商务网站的搜索引擎中。10. 根据权利要求9所述的推荐系统,其特征在于,所述数据采集模块通过所述电子商 务网站的生产服务器的日志采集系统采集本地日志,以获取用户跳转行为数据,并用于建 立用户与跳转行为的数据模型表,所述数据采集模块按照一预定义规则对所述数据模型表 进行分区,并通过分区的数据模型表来并行抽取用户一段时间内的跳转记录,汇总生成训 练数据集,并通过所述生产服务器的消息系统将所述训练数据集存入所述集群中; 所述模型训练模块包括:基本模型设置单元,用于设置好用户对产品的评分维度,建立 评分矩阵,形成基本模型;模型训练单元,用于根据所述集群的计算能力,设置隐式反馈协 同过滤算法的参数值以及目标跳转率,并采用所述训练数据集训练所述基本模型;预测模 型生成单元,用于根据每次训练结果反复调整所述参数值,使得产品跳转率达到所述目标 跳转率,得到所述预测模型; 所述并行预测模块包括:分组单元,用于将所述电子商务网站的用户拆分成多组,并根 据所述集群的并行运算能力进行用户集合和被推荐产品集合的笛卡尔积运算,生成所述的 预测数据集;预测单元,用于基于所述预测模型,并根据所述集群的并行运算能力对多个预 测数据集进行并行运算,以获得推荐结果。
【专利摘要】本发明提供一种基于隐式反馈协同过滤算法的推荐系统及方法,所述推荐方法包括:步骤1),根据一电子商务网站上的历史用户访问信息,抽取一段时间内的用户跳转行为记录,形成训练数据集;步骤2),根据所述训练数据集调整隐式反馈协同过滤算法基本模型的参数,生成预测模型;步骤3),根据该电子商务网站的集群的计算能力把用户分组,整合用户与被推荐的产品,生成多个预测数据集,并利用所述预测模型进行并行运算,预测出每组用户的产品偏好,形成推荐结果;步骤4),将所述推荐结果索引入所述电子商务网站的搜索引擎中。本发明的技术方案利用用户的跳转行为训练模型,并利用用户分组实现集群的并行运算,大大提升了推荐效果和计算效率。
【IPC分类】G06F17/30
【公开号】CN105488216
【申请号】CN201510955153
【发明人】朱旻, 胡雄华
【申请人】上海中彦信息科技有限公司
【公开日】2016年4月13日
【申请日】2015年12月17日

最新回复(0)