多源推荐方法、终端、服务器、计算机设备、可读介质与流程

文档序号:16609658发布日期:2019-01-14 21:30阅读:134来源:国知局
多源推荐方法、终端、服务器、计算机设备、可读介质与流程

本发明涉及用户推荐系统领域。更具体地,涉及多源推荐方法、终端、服务器、计算机设备、可读介质。



背景技术:

常见的推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。推荐算法的种类非常多,但是单独靠某一种或几种算法很难实现好的推荐效果,比如新用户的冷启动问题、数据稀疏性问题、推荐信息的实时性问题、数据的多样性问题等,目前没有一套推荐系统能够满足千人千面式的应用;中国专利文献专利申请号201110356894.4公开了名称为一种基于训练集优化的推荐系统的动态推荐方法,该方法虽然解决了推荐内容实时动态变化的问题,但仍然存在用户冷启动问题,新注册的用户无法获得有效的推荐内容,还存在推荐数据单一问题,针对用户的多种兴趣点,无法做到全面的推荐效果。



技术实现要素:

为了解决上述技术问题中的至少一个,本发明的第一个方面提供了一种多源推荐方法,包括:

终端收集用户的浏览数据并发送至服务器,以使服务器读取所述浏览数据同时写入hdfs分布式文件系统进行数据处理,并基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据;

终端接收所述推荐数据,并显示所述推荐信息;

其中,所述推荐模型组件包括基于物品协同过滤组件、关联算法推荐组件、矩阵分解推荐组件、hackernew排名算法组件、实时点击推荐组件、基于统计规则的预测模型组件以及基于深度学习的系统过滤组件。

优选地,所述终端收集用户的浏览数据并发送至服务器配置为:

终端接收服务器通过javascript发送的ajax请求,将浏览数据以埋点数据的形式发送至服务器进行数据的收集。

本发明第二方面提供了一种多源推荐方法,包括:

服务器接收终端发送的用户浏览数据同时写入hdfs分布式文件系统进行数据处理;

服务器基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据;

服务器向终端发送所述推荐数据,以使终端显示所述推荐信息;

其中,所述推荐模型组件包括:基于物品协同过滤组件、关联算法推荐组件、矩阵分解推荐组件、hackernew排名算法组件、实时点击推荐组件、基于统计规则的预测模型组件以及基于深度学习的系统过滤组件。

优选地,所述服务器进一步按照通过linux中设置crontab定时任务,读取埋点数据并写入到hdfs分布式文件系统。

本发明第三方面提供了一种终端,包括:

数据收集模块,收集用户的浏览数据并发送至服务器,以使服务器读取所述浏览数据同时写入hdfs分布式文件系统进行数据处理,并基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据;

推荐信息显示模块,接收所述推荐数据,并显示所述推荐信息;

其中,所述推荐模型组件包括:基于物品协同过滤组件、关联算法推荐组件、矩阵分解推荐组件、hackernew排名算法组件、实时点击推荐组件、基于统计规则的预测模型组件以及基于深度学习的系统过滤组件。

优选地,所述数据收集模块配置为:

接收服务器通过javascript发送的ajax请求,将浏览数据以埋点数据的形式发送至服务器进行数据的收集。

本发明第四方面提供了一种服务器,包括:

数据接收模块,接收终端发送的用户浏览数据同时写入hdfs分布式文件系统进行数据处理;

推荐模型模块,基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据;

数据发送模块,向终端发送所述推荐数据,以使终端显示所述推荐信息;

其中,所述推荐模型组件包括:基于物品协同过滤组件、关联算法推荐组件、矩阵分解推荐组件、hackernew排名算法组件、实时点击推荐组件、基于统计规则的预测模型组件以及基于深度学习的系统过滤组件。

优选地,所述数据接收模块配置为:

按照通过linux中设置crontab定时任务,读取埋点数据并写入到hdfs分布式文件系统。

本发明第五方面提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,

所述处理器执行所述程序时实现如上所述方法。

本发明第六方面提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法。

本发明的有益效果如下:

本发明提供多源推荐方法、终端、服务器、计算机设备、可读介质,通过在运用多种推荐组合算法和基于知识规则的推荐体系,为用户提供了大量的实用的推荐产品,基于推荐的完美效果,实现了用户留存、页面pv、uv等数据指标增长迅速,最大化的满足用户需求,用户对商城平台的粘度大大增加。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细的说明。

图1示出本发明实施例中涉及的多源推荐系统的场景架构。

图2示出本发明实施例中的一种多源推荐系统的结构示意图。

图3示出适用于用来实现本发明实施例的终端设备或服务器的计算机设备的结构示意图。

具体实施方式

为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。

图1是本发明实施例中涉及的多源推荐系统的场景架构,包括终端101以及服务器100。

其中,终端101可以为例如智能手机、平板电脑、电脑或者其他具有输入功能的智能设备。

应当理解,图1中的终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络和服务器。

以下结合若干实施例说明上述终端和服务器实现本发明具体过程:

本实施例中的多源推荐方法包括以下流程:

s1终端收集用户的浏览数据并发送至服务器。

所述终端收集用户的浏览数据并发送至服务器配置为:终端接收服务器通过javascript发送的ajax请求,将浏览数据以埋点数据的形式发送至服务器进行数据的收集。

s2服务器接收终端发送的用户浏览数据同时写入hdfs分布式文件系统进行数据处理。

例如可以通过在linux中设置crontab定时任务,将kafka中的数据读取并写入到hdfs分布式文件系统,然后开发数据etl脚本任务,并设置为定时运行,将hdfs文件中的原始数据进行etl操作(清洗、转换、加载至数据仓库)。

s3服务器基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据。

具体的,通过开发多种推荐模型组件,基于etl之后的hive数据仓库,推荐模型分为离线和实时部分,离线部分通过脚本定时执行,实时部分则长期运行,推荐数据存储于hbase,使用模型id作为列名区分不同的模型组件。

本发明中,推荐模型组件包括:

1、基于物品协同过滤组件(itemcf)

基于物品的协同过滤,通过分析两两物品间的相似度,把用户点击的商品最为相似的商品推荐给用户。比如用户查看了小米手机,推荐其他手机给用户。基于物品的协同过滤,物品的内在相似性一般比较固定,不太会改变,准确度一般也可以接收,但是从推荐的多样性来说,就很难给用户带来惊喜。对于较小的推荐系统来说,itemcf比较流行

2、关联算法推荐组件(associationrecommend)

找出用户点击购买的所有物品中频繁出现的项集活序列,来做时序频繁集挖掘,找到满足支持度阈值的关联物品。比如用户查看了小米手机,推荐小米手机套。

3、矩阵分解推荐

将用户的行为构造成行为矩阵,通过als进行矩阵分解,对用户进行个性化推荐

4、hackernew排名算法组件

5、实时点击推荐组件

根据用户最近一次的点击操作,推荐相似的相关商品。

6、基于统计规则的预测模型组件

数据源:用户点击行为表,用户订单行为表,商品曝光表,用户属性表,用户画像表,产品表从上述的数据源中,抽取出用户特征表和商品表,然后根据最近数据进行模型训练。对用户最近浏览的行为产生候选集,对候选集进行实时排序,预测用户是否对产品感兴趣。

7、基于深度学习的系统过滤组件

原理是将用户的浏览行为,当成是句子,然后进行关联性训练,得出相关商品,目前基于word2vec实现。

s4服务器向终端发送所述推荐数据。

具体的,开发微服务后台数据服务系统,基于springboot暴露restapi方式,通过传递相关的url参数实现推荐数据的前端页面查询展示功能。

s5终端接收所述推荐数据,并显示所述推荐信息。

下面以一个具体实施例加以说明:

步骤1,前端通过javascript代码埋点方式,将用户的操作行为记录下来并异步ajax发送至nginx-lua-kafka数据采集组件。

发送的数据的格式为统一的json格式,简单来说,一个event就是描述了:一个用户在某个时间点、某个地方,以某种方式完成了某个具体的事情。从这可以看出,一个完整的event,包含如下的几个关键因素:

1.who:即参与这个事件的用户是谁。在我们的数据接口中,使用distinct_id来设置用户的唯一id:对于未登录用户,这个id可以是cookie、设备id等匿名id;对于登录用户,则建议使用后台分配的实际用户id。同时,我们也提供了track_signup这个接口,在用户注册的时候调用,用来将同一个用户注册之前的匿名id和注册之后的实际id贯通起来进行分析。

2.when:即这个事件发生的实际时间。在我们的数据接口中,使用time字段来记录精确到毫秒的事件发生时间。如果调用者不主动设置,则各个sdk会自动获取当前时间作为time字段的取值。

3.where:即事件发生的地点。使用者可以设置properties中的$ip属性,这样系统会自动根据ip来解析相应的省份和城市,当然,使用者也可以根据应用的gps定位结果,或者其它方式来获取地理位置信息,然后手动设置$city和$province。除了$city和$province这两个预置字段以外,也可以自己设置一些其它地域相关的字段。例如,某个从事社区o2o的产品,可能需要关心每个小区的情况,则可以添加自定义字段“housingestate”;或者某个从事跨国业务的产品,需要关心不同国家的情况,则可以添加自定义字段“country”。

4.how:即用户从事这个事件的方式。这个概念就比较广了,包括用户使用的设备、使用的浏览器、使用的app版本、操作系统版本、进入的渠道、跳转过来时的referer等,目前,预置了如下字段用来描述这类信息,使用者也可以根据自己的需要来增加相应的自定义字段。

$app_version:应用版本

$city:城市

$manufacturer:设备制造商,字符串类型,如"apple"

$model:设备型号,字符串类型,如"iphone6"

$os:操作系统,字符串类型,如"ios"

$os_version:操作系统版本,字符串类型,如"8.1.1"

$screen_height:屏幕高度,数字类型,如1920

$screen_width:屏幕宽度,数字类型,如1080

$wifi:是否wifi,bool类型,如true

5.what:描述用户所做的这个事件的具体内容。在我们的数据接口中,首先是使用“event”这个事件名称,来对用户所做的内容做初步的分类。event的划分和设计也有一定的指导原则,我们会在后文详细描述。除了“event”这个至关重要的字段以外,我们并没有设置太多预置字段,而是请使用者根据每个产品以及每个事件的实际情况和分析的需求,来进行具体的设置,下面给出一些典型的例子:

对于一个“购买”类型的事件,则可能需要记录的字段有:商品名称、商品类型、购买数量、购买金额、付款方式等;

对于一个“搜索”类型的事件,则可能需要记录的字段有:搜索关键词、搜索类型等;

对于一个“点击”类型的事件,则可能需要记录的字段有:点击url、点击title、点击位置等;

对于一个“用户注册”类型的事件,则可能需要记录的字段有:注册渠道、注册邀请码等;

对于一个“用户投诉”类型的事件,则可能需要记录的字段有:投诉内容、投诉对象、投诉渠道、投诉方式等;

对于一个“申请退货”类型的事件,则可能需要记录的字段有:退货金额、退货原因、退货方式。

作为举例说明,在本实施例中,前端用户点击的某一个产品的详细页面,则会操作行为数据至数据采集服务系统,

步骤2,数据进入采集系统后,通过设置定时任务,每天凌晨执行,将昨天增量的数据同步至hdfs分布式文件系统,定时任务采用简单的crontab方式实现;

步骤3、同样设置定时任务,通过sparksql方式对增量和全量数据进行etl操作,然后将etl之后的数据存储至hive数据仓库

步骤4、特征提取操作,针对步骤3清洗的数据,根据目前提供的算法模型组件,提取用户特征数据、商品特征数据,存储至hive数据仓库

步骤5、针对步骤4过程中出现的一些缺失值的数据,进行定量特征二值化、定性特征哑编码、数据变换3种方式的操作,优化数据的完整性

步骤6、针对选择的特征数据进行降维操作,提取出关键的维度信息

步骤7、开发离线算法模型,例如,逻辑回归、决策树、协同过滤、word2vec、spark-ml包下的算法库,对离线数据进行训练测试,并采用0.8-0.2交叉验证训练,选择最优参数,将模型保存到hdfs上,将参数数据保存至hbase。

步骤8、基于步骤7的保存的预测结果,开发微服务数据服务系统,为业务方提供推荐数据

步骤9、评估报告,根据机器学习公认的指标,精确率,召回率,f值,auc等生成模型训练的评估报告,效果评估:根据模型上线后收集的数据,对模型的点击率、覆盖率等进行评估。

进一步的,本发明第二方面提供一种终端,结合图2,包括:

数据收集模块,收集用户的浏览数据并发送至服务器,以使服务器读取所述浏览数据同时写入hdfs分布式文件系统进行数据处理,并基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据;

推荐信息显示模块,接收所述推荐数据,并显示所述推荐信息;

其中,所述推荐模型组件包括:基于物品协同过滤组件、关联算法推荐组件、矩阵分解推荐组件、hackernew排名算法组件、实时点击推荐组件、基于统计规则的预测模型组件以及基于深度学习的系统过滤组件。

所述数据收集模块配置为:

接收服务器通过javascript发送的ajax请求,将浏览数据以埋点数据的形式发送至服务器进行数据的收集。

此外,本发明第三方面提供一种服务器,结合图2,包括:数据接收模块,接收终端发送的用户浏览数据同时写入hdfs分布式文件系统进行数据处理;

推荐模型模块,基于处理的数据加载推荐模型组件,使推荐模型组件基于该处理的数据发出包含推荐信息的推荐数据;

数据发送模块,向终端发送所述推荐数据,以使终端显示所述推荐信息;

其中,所述推荐模型组件包括:基于物品协同过滤组件、关联算法推荐组件、矩阵分解推荐组件、hackernew排名算法组件、实时点击推荐组件、基于统计规则的预测模型组件以及基于深度学习的系统过滤组件。

所述数据接收模块配置为:

按照通过linux中设置crontab定时任务,读取埋点数据并写入到hdfs分布式文件系统。

进一步的,本发明的一些具体实施例提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由终端执行的方法。

下面参考图3,其示出了适于用来实现本申请实施例的终端设备的计算机设备300的结构示意图。

如图3所示,计算机设备300包括中央处理单元(cpu)301,其可以根据存储在只读存储器(rom)302中的程序或者从存储部分308加载到随机访问存储器(ram))303中的程序而执行各种适当的工作和处理。在ram303中,还存储有系统300操作所需的各种程序和数据。cpu301、rom302、以及ram303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。

以下部件连接至i/o接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如lan卡,调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至i/o接口306。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装如存储部分308。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发送。例如两个接连地表示的方框实际上可以基本并行地执行,他们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1