一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Flink的大数据离线与实时商品推荐方法与流程

2022-03-05 10:42:23 来源:中国专利 TAG:
一种基于flink的大数据离线与实时商品推荐方法
技术领域
:1.本发明涉及大数据离线与流式计算框架flink
技术领域
:,具体来说,涉及一种基于flink的大数据离线与实时商品推荐方法。
背景技术
::2.随着信息技术的快速发展,业务功能的不断扩展以及数据量的不断增大,用户在面对这样庞大的数据规模时,通常会被大量冗余、无效的信息冲击,从而陷入一种无法抉择的迷茫状态,这是信息时代带来的一种负面影响—“信息过载”(2018.国外网络环境中信息过载研究进展[j].情报科学,郭佳;黄程松,36(07):170-176)。推荐系统是解决此类信息过载问题的一种非常有效的手段,然而海量的数据信息对于系统的数据处理能力和存储能力造成了巨大挑战。hadoop平台通过hdfs和mapreduce实现了大数据的分布式存储与计算,然而基于mapreduce计算模型的执行速度往往过慢,导致计算时间很长,而且该模型无法满足有迭代特点的推荐算法(2017.基于mapreduce的kmeans聚类算法的并行化实现[j].九江学院学报(自然科学版),张友海;李锋刚,32(01):73-75);目前主流的大数据计算引擎spark虽然支持批处理、流处理、交互式查询、图计算、机器学习等众多处理场景,但是其流式计算本质上来说是微批处理,导致流数据处理性能上难以突破(2018.基于hadoop、spark及flink大规模数据分析的性能评价[j].中国电子科学院学报,代明竹,高嵩峰,13(02):149-155)。[0003]作为第三代大数据计算引擎,flink可以提供准确的大规模流处理,具有高吞吐和低延迟等优良性能,并且实现了消息处理的exactly-once语义,同时兼容批处理等多种应用场景。此外,flink支持yarn或者mesos等集群管理器上进行部署和运行,从而灵活实现集群伸缩和扩展能力(2020.基于flink的电影推荐系统的研究与实现[d].电子科技大学,张廉月.)。目前基于flink的推荐系统已经得到了迅速发展(2020.基于flink的电影推荐系统的研究与实现[d].电子科技大学,张廉月.)(2019-08-27.一种基于flink的矩阵分解隐式反馈推荐方法和系统:中国,cn110175287a[p],李肯立等)(2021-06-11.用于实时推荐的flink流式处理引擎方法、装置及计算机设备:中国,cn112948450a[p],何肖明;周睿.)。[0004]在之前工作的基础上,本发明根据用户对于商品的行为数据,基于flink提出了一种较为系统的离线与实时商品推荐系统。与之前工作相比,本发明具有以下创新点:首先,本发明首次提出了基于层次分析法的用户打分机制,通过构造用户行为成对比较矩阵求解用户行为的影响权重,并通过各个行为得分获取用户对商品的打分;离线推荐部分,根据商品的name、tag等有效信息,通过自定义的tfidfmeasure实现了基于内容的商品相似度计算;实时推荐部分,通过引入商品的推荐优先级,实现了一种快速新颖的实时推荐算法。技术实现要素:[0005]针对相关技术中的上述技术问题,本发明提出一种基于flink的大数据离线与实时商品推荐方法,能够克服现有技术方法的上述不足。[0006]为实现上述技术目的,本发明的技术方案是这样实现的:[0007]一种基于flink的大数据离线与实时商品推荐方法,包括以下步骤:[0008]s1:首先,对使用的数据集预处理,来获取用户的商品评分表,所述数据集包括用户行为数据与商品明细数据,先获取所有种类的用户行为对于商品的权重,再通过权重与商品的用户行为得分获取到用户评分表与商品明细表,并将用户评分表与商品明细表导入hbase数据库;[0009]s2:根据用户评分表与商品明细表以及flink的大数据,进行离线推荐,主要包括基于统计的推荐、基于商品的协同过滤、基于商品内容的推荐以及基于隐语义模型的协同过滤,再根据用户所有的历史数据,调用设定的离线推荐方法进行周期性的数据分析;[0010]s3:实现离线推荐后,根据用户实时行为数据流进行实时的商品推荐,主要包括基于flink窗口机制统计实时热门商品topn和根据实时推荐原则,利用flink和优先级实时推荐算法进行基于商品优先级的实时推荐,需当用户给出一次或几次评分后,实时更新出推荐结果。[0011]进一步地,步骤s1中,获取到用户对每个商品的评分表的具体步骤包括:[0012]s21:构建包含用户行为的成对比较矩阵,即表示准则层或目标层所有因素针对上一层某一个因素的相对重要性的比较;[0013]s22:利用一致性指标和一致性比率,对成对比较矩阵进行一致性检验,并根据一致性指标选择性的对数值进行调整;[0014]s23:根据并利用成对比较矩阵的最大特征根求解其对应的归一化特征向量,获取到准则层各个行为对目标层的权重,求解出权重向量以及每个商品的用户行为得分,经过统计,即获取到用户评分表与商品明细表。[0015]进一步地,步骤s2中,所述基于统计的推荐是数据集根据所述用户打分表、商品推荐,通过flinktable&sqlapi实现统计推荐,最后存入hbase离线推荐数据库,所述商品推荐分为历史热门商品、近期热门商品与历史好评商品三部分。[0016]进一步地,所述历史热门商品是统计所有打分中打分数最多的商品,是按照从大到小排序;所述近期热门商品是分别按照打分数与时间戳排序,统计打分数最多的商品;所述历史好评商品是统计商品的平均打分数,再按照从大到小排序。[0017]进一步地,步骤s2中,所述基于商品的协同过滤是用户商品根据用户打分表,和通过商品共现次数与商品出现次数计算商品之间的同现相似度,再将数据存入hbase离线推荐数据库。[0018]进一步地,步骤s2中,所述基于商品内容的推荐是根据商品明细表,提取每个商品的id、名称、种类以及标签字段内容,然后利用自定义tdidf方法求解与某个商品相似度最高的前n个商品,并存入hbase离线推荐数据库中。[0019]进一步地,步骤s2中,所述基于隐语义模型的协同过滤是根据用户打分表,通过flinkml实现交替最小二乘算法als,获取离线的用户商品推荐列表,最后,存入hbase离线推荐数据库。[0020]进一步地,步骤s3中,所述统计实时热门商品topn是数据源基于flink滑动窗口机制,每隔几分钟输出最近一段时间内的用户产生行为次数最多的前n个商品,即实时热门商品topn。[0021]进一步地,步骤s3中,所述优先级实时推荐算法的计算步骤包括:[0022]s91:首先,用户对商品发生一次行为,计算对其打分,触发实时推荐的一次计算;[0023]s92:根据所述商品相似度,选出与商品相似度最高的几个商品作为商品集合;[0024]s93:获取用户最近时间内的打分数量,作为打分集合;[0025]s94:对每个商品,通过公式计算其推荐优先级,再生成一组商品列表;[0026]s95:将商品列表和实时推荐结果进行合并,获得最新的推荐结果。[0027]本发明的有益效果:通过在离线推荐部分,在flink中实现自定义的tfidfmeasure,充分利用商品的有效信息,实现了基于内容的商品相似度计算;通过在实时推荐部分,引入商品的推荐优先级概念,在flink中实现了基于推荐优先级算法进行基于优先级的实时推荐。附图说明[0028]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0029]图1是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的构造成对比较矩阵模型示意图。[0030]图2是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的用户对商品打分的层次模型示意图。[0031]图3是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的flink中itemcf流程图示意图。[0032]图4是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的flink中tfidf流程图示意图。[0033]图5是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的flink中als流程图示意图。[0034]图6是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的flink中实时热门商品流程示意图。[0035]图7是根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法的flink中实时推荐算法流程示意图。具体实施方式[0036]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围,为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。[0037]根据本发明实施例所述的基于flink的大数据离线与实时商品推荐方法,包括:首先,对使用的数据集预处理,来获取用户的商品评分表,所述数据集包括用户行为数据与商品明细数据。[0038]例如:所述用户行为数据的格式为:userid||productid||behaviortype||timestamp。[0039]其中,用户行为的定义方式如下:[0040]1:click,2:collect,3:add-to-cart,4:payment。[0041]每个商品,对应的每个行为的评分分别为:scorei,i=1,2,3,4。[0042]例如:所述商品明细数据格式为:productid||name||categoryids||amazonid||imageurl||categories||tags。[0043]例如:3982||fuhlen富勒m8眩光舞者时尚节能无线鼠标(草绿)(眩光.悦动.时尚炫舞鼠标12个月免换电池高精度光学寻迹引擎超细微接收器10米传输距离)||1057,439,736||b009ejn4t2||https://images-cn-4.ssl-images–amazon.com/images/i/31qpvudnavl._sy300_ql70_.jpg||外设产品|鼠标|电脑/办公||富勒|鼠标|电子产品|好用|外观漂亮。[0044]先获取所有种类的用户行为对于商品的权重,再通过权重与商品的用户行为得分获取到用户评分表与商品明细表,并将用户评分表与商品明细表导入hbase数据库。[0045]如图1所示,获取到用户对每个商品的评分表的具体步骤包括:[0046](1)构建包含用户行为的成对比较矩阵,即表示准则层或目标层所有因素针对上一层某一个因素的相对重要性的比较。[0047]构建的成对比较矩阵:[0048][0049]式中:a为n阶互反阵,aij表示第i个因素相对于第j个因素的比较结果,且满足[0050](2)定义一致性指标:[0051]其中,λ表示矩阵a的最大特征根,当且仅当λ=n时,a为一致矩阵。[0052]为衡量ci大小,随机构造若干个成对比较矩阵a1,a2,...,am,定义一致性指标为:[0053]定义一致性比率:利用一致性指标及一致性比率cr<0.1,即可对成对比较矩阵进行一致性校验并根据一致性指标进行aij的数值调整。[0054](3)根据并利用成对比较矩阵的最大特征根求解其对应的归一化特征向量,获取到准则层各个行为对目标层的权重,根据公式aw=λw,w={w1,w2,...,wn},求解出权重向量以及每个商品的用户行为得分经过统计,即获取到用户评分表格式为:[0055]userid||productid||rating||timestamp与商品明细表。[0056]根据用户评分表与商品明细表以及flink的大数据,进行离线推荐,主要包括基于统计的推荐、基于商品的协同过滤、基于商品内容的推荐以及基于隐语义模型的协同过滤,再根据用户所有的历史数据,调用设定的离线推荐方法进行周期性的数据分析。[0057]如图2所示,所述基于统计的推荐是数据集根据所述用户打分表、商品推荐,通过flinktable&sqlapi实现统计推荐,最后存入hbase离线推荐数据库,所述商品推荐分为历史热门商品、近期热门商品与历史好评商品三部分。所述历史热门商品是统计所有打分中打分数最多的商品,是按照从大到小排序;所述近期热门商品是分别按照打分数与时间戳排序,统计打分数最多的商品;所述历史好评商品是统计商品的平均打分数,再按照从大到小排序。[0058]如图3所示,所述基于商品的协同过滤(itemcf)是用户商品根据用户打分表,和通过商品共现次数与商品出现次数计算商品之间的同现相似度,使用的公式为:[0059][0060]式中:ni是对商品i打分的用户列表,nj是对商品j打分的用户列表。再将结果数据存入hbase离线推荐数据库。[0061]附图3中,用户商品dataset:userid||productid;[0062]商品共现次数dataset:productid1||productid2||cocount,由用户商品dataset注册为临时表,执行sql生成;[0063]商品出现次数dataset:userid||productid||count;[0064]共现次数、出现次数dataset:[0065]productid1||productid2||cocount||count1||count2,由商品共现次数dataset与商品出现次数dataset根据productid作join生成;[0066]商品相似度dataset:productid1||productid2||similarity,similarity表示两个商品的同现相似度,在mapfunction中计算。[0067]如图4所示,所述基于商品内容的推荐是根据商品明细表,提取每个商品的id、名称、种类以及标签字段内容,然后利用自定义tdidf方法求解与某个商品相似度最高的前n个商品,并存入hbase离线推荐数据库中。[0068]附图4中,商品明细dataset:[0069]productid||name||categoryids||amazonid||imageurl||categories||tags;[0070]商品内容dataset:productid||name||categories||tags;[0071]contentproductentitydataset:商品内容dataset中的每条数据转化为contentproductentity类,包含属性是productid、name、categories与tags;[0072]商品相似度dataset:productid||productid1,productid2,productid3,productid4,productid5..,通过在mapfunction中实现自定义tfidfmeasure计算商品相似度,获取与productid相似度最高的n个商品。[0073]如图5所示,所述基于隐语义模型的协同过滤是根据用户打分表,通过flinkml实现交替最小二乘算法als(als是一个预测模型,支持fit与predict,通过训练出来的model来计算所有当前用户商品的推荐列表),获取离线的用户商品推荐列表,最后,存入hbase离线推荐数据库。[0074]附图5中,用户打分dataset:[0075]userid||productid||rating||timestamp;[0076]als训练集:userid||productid||rating;[0077]als测试集:userid||productid;[0078]用户推荐dataset:userid||productid1,productid2,productid3,productid4,productid5..,通过alsmodel预测每个用户对每个商品的打分,并按照预测值进行排序,返回预测值最大的n个商品,作为用户的推荐列表。[0079]实现离线推荐后,根据用户实时行为数据流进行实时的商品推荐,主要包括基于flink窗口机制统计实时热门商品topn和根据(2020.基于flink的电影推荐系统的研究与实现[d].电子科技大学,张廉月.)提出的实时推荐原则,利用flink和优先级实时推荐算法进行基于商品优先级的实时推荐,需当用户给出一次或几次评分后,实时更新出推荐结果。[0080]如图6所示,所述统计实时热门商品topn是数据源基于flink滑动窗口机制,每隔几分钟输出最近一段时间内的用户产生行为次数最多的前n个商品,即实时热门商品topn。其中,数据源一般选为kafka,窗口聚合操作使用增量聚合函数与全窗口聚合函数相结合。[0081]上述利用flink和优先级实时推荐算法进行基于商品优先级的实时推荐,相比于离线推荐,实时推荐的结果应该反映最近一段时间用户近期的偏好,当用户对一个商品评价后,用户会希望推荐结果基于最近这几次评分进行一定的更新,使得推荐结果匹配用户近期的偏好。一般来说,实时推荐的设计应满足:用户给出一次或几次评分后,实时推荐可以明显地更新推荐结果;实时推荐算法不宜过于复杂,需要保证时间上地实时或者近实时要求。如图7所示,所述优先级实时推荐算法的计算步骤包括:[0082]1.首先,用户u对商品p发生一次行为,计算对其打分,触发实时推荐的一次计算;[0083]2.根据所述商品相似度,选出与商品p相似度最高的k个商品作为商品集合s;[0084]3.获取用户u最近时间内的k条打分数量,作为打分集合rk;[0085]4.对每个商品q∈s,计算其推荐优先级euq,通过公式:[0086][0087]式中:rr表示用户u对商品r的相似度;sim(q,r)表示商品q与商品r的相似度;sim_sum表示q与rk中商品相似度大于最小阈值(一般为0.6)的个数;incount表示rk中与商品q相似的,且本身打分较高的商品个数;recount表示rk中与商品q相似的,且本身打分较低的商品个数。[0088]在计算完每个候选商品q的优先级euq后,将生成一组《q_id,euq》的列表[0089]5.将updatelist与上述实时推荐结果进行合并,获得最新推荐结果:newrec=topk(i∈red∪updatelist,cmp=eui)。[0090]式中:i表示updatelist与rec的并集中的每个商品;topk是一个函数,表示从red∪updatelist中选择出最大的k个商品;cmp=eui表示topk函数将推荐优先级eui值最大的k个商品选出来。[0091]综上所述,借助于本发明的上述技术方案,通过在离线推荐部分,在flink中实现自定义的tfidfmeasure,充分利用商品的有效信息,实现了基于内容的商品相似度计算;通过在实时推荐部分,引入商品的推荐优先级概念,在flink中实现了基于推荐优先级算法进行基于优先级的实时推荐。[0092]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献