CN109635186A - 一种基于Lambda架构的实时推荐方法 - Google Patents

一种基于Lambda架构的实时推荐方法 Download PDF

Info

Publication number
CN109635186A
CN109635186A CN201811364838.3A CN201811364838A CN109635186A CN 109635186 A CN109635186 A CN 109635186A CN 201811364838 A CN201811364838 A CN 201811364838A CN 109635186 A CN109635186 A CN 109635186A
Authority
CN
China
Prior art keywords
data
real
user
time
hdfs
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.)
Pending
Application number
CN201811364838.3A
Other languages
English (en)
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.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
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 South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201811364838.3A priority Critical patent/CN109635186A/zh
Publication of CN109635186A publication Critical patent/CN109635186A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于Lambda架构的实时推荐方法,包括以下步骤:1)从传统数据库中导入数据到HDFS,并上传和获取数据;2)收集Web日志数据,发送和收集大量的事件和日志数据;3)构建推荐引擎,训练HDFS中存储的用户数据,构建用户特征模型,将用户特征模型存入redis数据库中;4)实时获取的用户行为数据,增量更新用户特征模型,同时通过用户特征模型计算出推荐结果列表;5)构建用户推荐系统的前端界面,并利用scala来实现实时推荐系统的实时交互。本发明可直接应用于离线和在线的推荐系统任务中,可以解决离线推荐系统中数据实时性差的问题,且通过对ALS算法模型的更新迭代可提高推荐系统的准确率。

Description

一种基于Lambda架构的实时推荐方法
技术领域
本发明涉及网络数据挖掘领域中的信息挖掘和实时推荐预测领域,特别涉及一种基于Lambda架构的实时推荐方法。
背景技术
随着互联网的普及和计算机技术的进步,信息的数量呈指数级增长,人们在享受互联网带来便利的同时,也受到“信息碎片化”和“信息过载”的困扰。在信息大爆炸的今天,虽然在互联网上几乎能找到一切问题的答案,但是人们去很难在海量的信息当中精准地定位自身真实地需求。依靠传统的百度、Google等基于关键字的搜索引擎虽然能满足大众一般的信息需求,但却难以满足特定场景下的用户个性化与定制化。因此,如何高效地帮助用户过滤冗余信息,精准定位用户真实需求,提高用户体验成为众多领域重点关注的问题。
个性化推荐系统应运而生,成为当前解决“信息超载”问题的主流方法。个性化系统不仅能够满足用户个性化需求,提升用户体验,并且在具体商业场景下能够大幅度提高用户的行为转化率。近年来,人工智能的快速发展,推荐系统的推荐对象已经从最初的邮件过滤扩展到了音乐视频网站、个性化阅读、社交网络、在线广告、电子商务等领域,其中在电子商务领域的应用最为广泛和成熟。以电商平台为例,用户浏览商品(电商平台具商品的浏览记录)、购买行为(加入购物车、购买记录)等数据,其实上蕴含了用户的消费习惯和潜在需求,个性化推荐系统正是通过对这些客观数据来进行建模,捕捉用户偏好,从而向用户精准地推荐有价值的商品。
推荐系统的性能依赖于数据,训练数据量的多少直接能够影响推荐系统的准确性,理论上数据量越大训练的模型越准确。在大数据环境下,推荐系统对数据的需求可以说是无限量的。然而,数据量的增多意味着系统存储量需求的增大和计算速度的延长。如何在大数据下进行的高质量推荐是新一代推荐系统所面临的问题,也是其发展方向。Hadoop平台作为大数据平台的代名词,可以在两方面解决推荐系统所面临的问题。一方面,Hadoop平台使用分布式文件系统存储不断收集的数据;在另一方面,Hadoop平台可以利用并行计算模式极大地缩短对大数据集进行运算的时间。本发明将对基于Hadoop平台的商品推荐系统进行一定的研究,关于如何选取相关学习算法进行模型训练和运用模型进行用户商品推荐,以及关于如何将系统实现在分布式的Hadoop平台上,以提高推荐系统的效率和推荐系统的性能。
基于上述动机和技术,本发明提出一种基于Lambda架构的实时推荐方法。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于Lambda架构的实时推荐方法,该方法结合协同过滤隐含因子分解的ALS模型与Hadoop分布式处理平台,解决现有推荐系统中效率和性能低下的问题,并利用lambda体系架构中在线层对离线层的数据模型的更新迭代进一步提高推荐预测的准确率。该方法操作简易,只需在已有的离线推荐数据集上训练出基于隐含因子分解的ALS模型,然后利用Flume提供在线实时采集的文本数据集更新原有离线推荐模型,为用户进行推荐预测。
本发明的目的通过以下的技术方案实现:
一种基于Lambda架构的实时推荐方法,包括以下步骤:
1)利用Sqoop从MySQL中导入数据到HDFS,把传统数据库中的数据导进到Hadoop的HDFS中,作为推荐系统的离线数据集;
2)使用Flume收集Web日志数据,在分散的数据源中提取不同系统组件和不同机器上产生的用户访问日志,利用Kafka把数据发送给Spark Streaming流处理框架,作为推荐系统的实时数据集;
3)利用Spark MLlib来构建推荐引擎,从推荐算法库中选择ALS算法来训练HDFS中存储的用户数据,构建用户特征模型,将用户特征模型存入redis数据库中;
4)利用在线推荐模块实时获取的用户行为数据,增量更新用户特征模型,同时通过用户特征模型计算出推荐结果列表;
5)通过webService来构建用户推荐系统的前端界面,并利用scala来实现实时推荐系统的实时交互。
所述步骤1),具体如下:
a)Sqoop与数据库Server通信,获取数据库表的元数据信息;
b)Sqoop启动一个Map-Only的MR作业,利用元数据信息并行将数据写入Hadoop。
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
步骤2)中,所述使用Flume收集Web日志数据,在分散的数据源中提取不同系统组件和不同机器上产生的用户访问日志,具体为:
a)将多源原始日志包装成events并且将它们发送到一个以上agent的实体Client;
b)当Source捕获events后进行特定的格式化,然后将events推入一个以上Channel中,随后由Sink持久化日志,同时把events推向另一个Source;
c)Agent利用组件将events从一个节点传输到另一个节点或最终目的HDFS中;所述组件包括Source、Channel、Sink。
由于采集数据的速度和数据处理的速度不一定同步,因此添加一个消息中间件来作为缓冲,选用apache的kafka:Flume收集多源原始日志的数据信息,然后再对Flume进行串联,即对Flume进行扩展,选中一台flume,把信息sink到Kafka去,此时这台Flume的sink就相当于是kafka的生产者,再启动一台kafka的消费者,直接对接到kafka的生产者,这样就完成了Flume到Kafka的实时数据采集。
Kafka作为一个高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。其所采集的数据就是用户行为的数据,例如用户的点击、登录注册、收藏、购买等行为就会触发用户推荐。
所述events由Agent外部的Source生成,所述events由可选的header和载有数据的一个byte array组成。
所述Channel是一个缓冲区,它将保存events直到Sink处理完。
所述步骤3),是利用Spark MLlib来构建推荐引擎,将上传至HDFS中的用户数据进行划分,并通过ALS算法进行训练,通过对不同参数的算法进行交叉验证得出最优推荐模型,同时利用最优推荐模型构建用户特征模型,并将用户特征模型存入redis数据库中;所述步骤3)具体包括以下内容:
a)将HDFS中的数据集进行加载;
b)将数据集解析成ALS要求的格式;
c)将数据分割成三部分:训练集、交叉验证集和测试集;
d)运行ALS,产生评估模型;
e)利用最优模型构建用户特征模型。
步骤1)中,所述传统数据库包括MySQL、Oracle、Postgres。
本发明与现有技术相比,具有如下优点和有益效果:
本发明利用Hadoop分布式存储计算为大数据处理优化手段,解决离线推荐模型数据存储扩展性差的问题,利用了隐含因子分解的ALS模型对推荐模型进行调优,并利用Flume提供在线实时采集的文本数据集更新原有离线推荐模型,进而提高推荐系统预测的准确性。
附图说明
图1为Lambda体系架构流程图。
图2为Flume组件拓扑结构图。
图3为ALS算法的详细网络示意图。
图4为推荐系统模型构建流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
如图1、2、3、4,一种基于Lambda架构的实时推荐方法,包括以下步骤:
步骤1)中,利用Sqoop从MySQL中导入数据到HDFS,把传统数据库(例如:MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,具体包括以下内容:a)Sqoop与数据库Server通信,获取数据库表的元数据信息,生成运行类,默认为QueryResult,打成jar包,然后提交给Hadoop;b)设置好job,根据实际业务情况设置好各个参数;c)启动一个Map-Only的MR作业,由Hadoop中的MapReduce来执行Import命令:①首先要对数据进行切分,也就是DataSplit,DataDrivenDBInputFormat.getSplits(JobContext job);②切分好范围后,写入范围,以便读取DataDrivenDBInputFormat.write(DataOutput output)这里是lowerBoundQuery and upperBoundQuery;③读取以上②写入的范围DataDrivenDBInputFormat.readFields(DataInput input);④然后创建RecordReader从数据库中读取数据DataDrivenDBInputFormat.createRecordReader(InputSplit split,TaskAttemptContextcontext);⑤创建Map TextImportMapper.setup(Context context);⑥RecordReader一行一行从关系型数据库中读取数据,设置好Map的Key和Value,交给Map,DBRecordReader.nextKeyValue();⑦运行map,TextImportMapper.map(LongWritablekey,SqoopRecord val,Context context),最后生成的Key是行数据,由QueryResult生成,Value是NullWritable.get()。
步骤2)中,构建基于Flume模型的多源数据特征提取网络,具体包括以下内容:a)将多源原始日志包装成events并且将它们发送到多个agent的实体Client,这些events由Agent外部的Source生成;(events由可选的header和载有数据的一个byte array组成);b)当Source捕获事件后会进行特定的格式化,然后Source会把事件推入多个Channel中;(Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件)c)随后由Sink持久化日志和把events推向另一个Source。Agent利用Source、Channel、Sink这些组件将events从一个节点传输到另一个节点或最终目的HDFS中。其配置表如表1所示。
表1:Flume配置表
由于采集数据的速度和数据处理的速度不一定同步,因此添加一个消息中间件来作为缓冲,选用apache的kafka:Flume收集WEB服务器的数据信息,然后再对Flume进行串联,即对Flume进行扩展,选中一台flume,把信息sink到Kafka去,此时这台Flume的sink就相当于是kafka的生产者,再启动一台kafka的消费者,直接对接到kafka的生产者,这样就完成了Flume到Kafka的实时数据采集。
步骤3)中,利用Spark MLlib来构建推荐引擎,将上传至HDFS中的用户数据进行划分,并通过ALS算法进行训练,通过对不同参数的算法进行交叉验证得出最优推荐模型,同时利用最优推荐模型构建用户特征模型,并将用户特征模型存入redis数据库中。具体步骤包括以下内容:a)将HDFS中的数据集进行加载;b)将数据集解析成ALS要求的格式;c)将数据分割成三部分:训练集、交叉验证集和测试集;d)运行ALS,产生并评估模型;e)利用最优模型构建用户特征模型。
其中,ALS隐含因子矩阵分解推荐算法如下,其中:
其参数设置为:numBlocks(计算并行度):-1;Rank(模型中隐含影响因子):10,20;Iterations(迭代次数):10,20;Lambda(正则化参数):0.1,0.9;implicitPrefs(是否使用显示反馈变量或使用隐式反馈数据的变量):默认;Alpha(ALS中的一个参数,作用于隐式反馈变量,控制基本信心度)。其推荐流程为:a)加载数据集;b)将数据及解析成ALS要求的格式;c)将数据及分割成三部分:训练集、交叉验证集、测试集;d)运行ALS,产生并选择最佳推荐模型;e)将最终模型用于推荐。
步骤4)中,利用在线推荐模块实时实时获取的用户行为数据,增量更新用户特征模型,同时通过用户特征模型计算出推荐结果列表。具体步骤包括以下内容:
步骤5)中,通过webService来构建用户推荐系统的前端界面,并利用scala来实现实时推荐系统的实时交互。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (7)

1.一种基于Lambda架构的实时推荐方法,其特征在于,包括以下步骤:
1)利用Sqoop从MySQL中导入数据到HDFS,把传统数据库中的数据导进到Hadoop的HDFS中,作为推荐系统的离线数据集;
2)使用Flume收集Web日志数据,在分散的数据源中提取不同系统组件和不同机器上产生的用户访问日志,利用Kafka把数据发送给Spark Streaming流处理框架,作为推荐系统的实时数据集;
3)利用Spark MLlib来构建推荐引擎,从推荐算法库中选择ALS算法来训练HDFS中存储的用户数据,构建用户特征模型,将用户特征模型存入redis数据库中;
4)利用在线推荐模块实时获取的用户行为数据,增量更新用户特征模型,同时通过用户特征模型计算出推荐结果列表;
5)通过webService来构建用户推荐系统的前端界面,并利用scala来实现实时推荐系统的实时交互。
2.根据权利要求1所述基于Lambda架构的实时推荐方法,其特征在于,所述步骤1),具体如下:
a)Sqoop与数据库Server通信,获取数据库表的元数据信息;
b)Sqoop启动一个Map-Only的MR作业,利用元数据信息并行将数据写入Hadoop。
3.根据权利要求1所述基于Lambda架构的实时推荐方法,其特征在于,步骤2)中,所述使用Flume收集Web日志数据,在分散的数据源中提取不同系统组件和不同机器上产生的用户访问日志,具体为:
a)将多源原始日志包装成events并且将它们发送到一个以上agent的实体Client;
b)当Source捕获events后进行特定的格式化,然后将events推入一个以上Channel中,随后由Sink持久化日志,同时把events推向另一个Source;
c)Agent利用组件将events从一个节点传输到另一个节点或最终目的HDFS中;所述组件包括Source、Channel、Sink。
4.根据权利要求3所述基于Lambda架构的实时推荐方法,其特征在于,所述events由Agent外部的Source生成,所述events由可选的header和载有数据的一个byte array组成。
5.根据权利要求3所述基于Lambda架构的实时推荐方法,其特征在于,所述Channel是一个缓冲区,它将保存events直到Sink处理完。
6.根据权利要求1所述基于Lambda架构的实时推荐方法,其特征在于,所述步骤3),是利用Spark MLlib来构建推荐引擎,将上传至HDFS中的用户数据进行划分,并通过ALS算法进行训练,通过对不同参数的算法进行交叉验证得出最优推荐模型,同时利用最优推荐模型构建用户特征模型,并将用户特征模型存入redis数据库中;所述步骤3)具体包括以下内容:
a)将HDFS中的数据集进行加载;
b)将数据集解析成ALS要求的格式;
c)将数据分割成三部分:训练集、交叉验证集和测试集;
d)运行ALS,产生评估模型;
e)利用最优模型构建用户特征模型。
7.根据权利要求1所述基于Lambda架构的实时推荐方法,其特征在于,步骤1)中,所述传统数据库包括MySQL、Oracle、Postgres。
CN201811364838.3A 2018-11-16 2018-11-16 一种基于Lambda架构的实时推荐方法 Pending CN109635186A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811364838.3A CN109635186A (zh) 2018-11-16 2018-11-16 一种基于Lambda架构的实时推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811364838.3A CN109635186A (zh) 2018-11-16 2018-11-16 一种基于Lambda架构的实时推荐方法

Publications (1)

Publication Number Publication Date
CN109635186A true CN109635186A (zh) 2019-04-16

Family

ID=66068151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811364838.3A Pending CN109635186A (zh) 2018-11-16 2018-11-16 一种基于Lambda架构的实时推荐方法

Country Status (1)

Country Link
CN (1) CN109635186A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110809050A (zh) * 2019-11-08 2020-02-18 智者四海(北京)技术有限公司 基于流式计算的个性化推送系统及方法
CN111199287A (zh) * 2019-12-16 2020-05-26 北京淇瑀信息科技有限公司 一种特征工程实时推荐方法、装置及电子设备
CN111506908A (zh) * 2020-04-10 2020-08-07 深圳新致软件有限公司 针对保险业的大数据推荐方法、系统以及设备
CN112434244A (zh) * 2020-11-23 2021-03-02 北京八分量信息科技有限公司 基于ueba进行日志处理的方法、装置及相关产品
WO2022095661A1 (zh) * 2020-11-04 2022-05-12 腾讯科技(深圳)有限公司 推荐模型的更新方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160300157A1 (en) * 2015-04-08 2016-10-13 Nec Laboratories America, Inc. LambdaLib: In-Memory View Management and Query Processing Library for Realizing Portable, Real-Time Big Data Applications
CN106126641A (zh) * 2016-06-24 2016-11-16 中国科学技术大学 一种基于Spark的实时推荐系统及方法
CN106296305A (zh) * 2016-08-23 2017-01-04 上海海事大学 大数据环境下的电商网站实时推荐系统与方法
US20170060622A1 (en) * 2015-02-27 2017-03-02 Savi Technology, Inc. System and method for a data processing architecture
US20170293695A1 (en) * 2016-04-12 2017-10-12 Ebay Inc. Optimizing similar item recommendations in a semi-structured environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170060622A1 (en) * 2015-02-27 2017-03-02 Savi Technology, Inc. System and method for a data processing architecture
US20160300157A1 (en) * 2015-04-08 2016-10-13 Nec Laboratories America, Inc. LambdaLib: In-Memory View Management and Query Processing Library for Realizing Portable, Real-Time Big Data Applications
US20170293695A1 (en) * 2016-04-12 2017-10-12 Ebay Inc. Optimizing similar item recommendations in a semi-structured environment
CN106126641A (zh) * 2016-06-24 2016-11-16 中国科学技术大学 一种基于Spark的实时推荐系统及方法
CN106296305A (zh) * 2016-08-23 2017-01-04 上海海事大学 大数据环境下的电商网站实时推荐系统与方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
孟莲蓉: "某广电单位大数据平台架构设计", 《科技资讯》 *
陆世鹏: "基于Spark Streaming的海量日志实时处理系统的设计", 《电子产品可靠性与环境试验》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110809050A (zh) * 2019-11-08 2020-02-18 智者四海(北京)技术有限公司 基于流式计算的个性化推送系统及方法
CN110809050B (zh) * 2019-11-08 2022-11-29 智者四海(北京)技术有限公司 基于流式计算的个性化推送系统及方法
CN111199287A (zh) * 2019-12-16 2020-05-26 北京淇瑀信息科技有限公司 一种特征工程实时推荐方法、装置及电子设备
CN111506908A (zh) * 2020-04-10 2020-08-07 深圳新致软件有限公司 针对保险业的大数据推荐方法、系统以及设备
WO2022095661A1 (zh) * 2020-11-04 2022-05-12 腾讯科技(深圳)有限公司 推荐模型的更新方法、装置、计算机设备和存储介质
CN112434244A (zh) * 2020-11-23 2021-03-02 北京八分量信息科技有限公司 基于ueba进行日志处理的方法、装置及相关产品

Similar Documents

Publication Publication Date Title
CN109635186A (zh) 一种基于Lambda架构的实时推荐方法
WO2022007526A1 (zh) 一种基于多视图注意力机制的旅游包推荐方法
Zhang et al. CAP: Community activity prediction based on big data analysis
CN113362131B (zh) 一种融合知识图谱和用户交互的图模型智能商品推荐方法
US9665663B2 (en) Generating user recommendations
Yang et al. Mining Chinese social media UGC: a big-data framework for analyzing Douban movie reviews
CN112765373B (zh) 资源推荐方法、装置、电子设备和存储介质
CN106296305A (zh) 大数据环境下的电商网站实时推荐系统与方法
CN104933239A (zh) 一种基于混合模型的个性化职位信息推荐系统及实现方法
CN101192235A (zh) 一种基于用户特征推送广告的方法、系统及设备
CN110019616A (zh) 一种poi现势状态获取方法及其设备、存储介质、服务器
CN105975440A (zh) 一种基于图计算模型的矩阵分解并行化方法
CN113609374A (zh) 基于内容推送的数据处理方法、装置、设备及存储介质
CN100461182C (zh) 一种基于多视角的交互式视频搜索方法
CN116975615A (zh) 基于视频多模态信息的任务预测方法和装置
Amir et al. On the current state of deep learning for news recommendation
CN113254630A (zh) 一种面向全球综合观测成果的领域知识图谱推荐方法
CN106021391B (zh) 基于Storm的产品评论信息实时采集方法
Bai et al. FTMF: Few-shot temporal knowledge graph completion based on meta-optimization and fault-tolerant mechanism
Fazelnia et al. Variational user modeling with slow and fast features
Gaurav et al. An outline on big data and big data analytics
CN116595157B (zh) 基于用户意图融合的动态兴趣转移型会话推荐方法与系统
CN107357919A (zh) 行为日志查询系统及方法
Chen et al. A multitask recommendation algorithm based on DeepFM and Graph Convolutional Network
Su Accurate Marketing Algorithm of Network Video Based on User Big Data Analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190416

RJ01 Rejection of invention patent application after publication