首页> 中国专利> 一种基于聚类的流式推荐引擎、推荐系统以及推荐方法

一种基于聚类的流式推荐引擎、推荐系统以及推荐方法

摘要

本发明公开了一种基于聚类的流式推荐引擎、推荐系统以及推荐方法,本方案通过构建一个增量式的聚类方法,结合聚类结构和协同过滤方法的优点,通过聚类结构将用户和商品分类,通过基于协同过滤方法挖掘各用户和商品间的关联关系。本方案能够在保证推荐准确率的同时,提高推荐结果的领域特性与关联特性,提高推荐准确性。

著录项

  • 公开/公告号CN105608219A

    专利类型发明专利

  • 公开/公告日2016-05-25

    原文格式PDF

  • 申请/专利权人 上海通创信息技术有限公司;

    申请/专利号CN201610008387.4

  • 发明设计人 陈德来;唐新怀;陈越晨;

    申请日2016-01-07

  • 分类号G06F17/30(20060101);

  • 代理机构31224 上海天翔知识产权代理有限公司;

  • 代理人刘粉宝

  • 地址 201203 上海市浦东新区中国(上海)自由贸易试验区碧波路572弄116号6幢

  • 入库时间 2023-12-18 15:29:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-18

    授权

    授权

  • 2016-06-22

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160107

    实质审查的生效

  • 2016-05-25

    公开

    公开

说明书

技术领域

本发明涉及网络数据分析处理技术,具体涉及一种数据信息的推荐技术。

背景技术

目前,业界针对个性化推荐技术的研究主要有基于协同过滤,基于矩阵分 解两类方法,而对于增量式的推荐技术主要是基于增量式的矩阵计算的方法。 针对现有的个性化推荐系统,存在不足之处,具体如下:

基于协同过滤的算法,主要通过对数据集进行分析计算出有相似偏好的用 户,和相似的物品。而基于矩阵分解的算法,主要是通过矩阵分解提取出用户 的隐形偏好,通过对偏好矩阵的迭代计算来得到最终矩阵的。这两种方法的优 点在于计算的可靠性已经经过了大量实验论证,但缺点是适用于离线计算,不 适用于在大规模实时数据集下进行流式计算。

对于增量式的矩阵计算的方法,主要通过增量矩阵计算的方式,构建增量 式目标矩阵。该方法的缺点是,所计算的增量矩阵难以准确概括用户间关联关 系。

在大数据膨胀的环境下,提供一种能够在保证不影响推荐准确率的同时, 保证在线推荐的实时性的适应个性化推荐方案,是本领域亟需解决的技术问题。

发明内容

针对现有对个性化推荐技术在实时性和准确率上所存在的问题,本发明的 主要目的如下:

目的1:提供一种具有在线实时性和高准确性的推荐引擎;

目的2:提供一种基于上述推荐引擎实现的推荐系统;

目的3:提供一种基于上述推荐引擎实施的推荐方法。

为了达到上述目的,本发明采用如下的技术方案:

针对目的1:提供一种基于聚类的流式推荐引擎,该推荐引擎主要包括:

离线训练模型,所述离线训练模型从持久数据源中训练出初始聚类模型和 用户关联模型,并将初始聚类模型和用户关联模型写入到文件系统中;

增量训练模型,所述增量训练模型从文件系统中加载初始聚类模型和用户 关联模型,据此加载流式数据对聚类模型进行增量训练,产生增量式聚类模型;

在线推荐模块,所示在线推荐模块基于增量式聚类模型和用户关联模型进 行实时现在推荐。

优选的,所述流式推荐引擎的架构包括离线计算层和实时计算层,流式推 荐引擎中的离线训练模型运行在整个推荐引擎架构的离线计算层,增量训练模 型和在线推荐模块运行在整个推荐引擎架构的实时计算层。

优选的,在离线计算层中,首先将持久化数据源中的数据进行抽取、转换、 并加载到离线训练模块中;接着由离线训练模块基于设定的聚类模型训练出初 始聚类模型和用户关联模型;最后将聚类模型和用户关联模型序列化写到文件 系统中。

优选的,在实时计算层中,首先由增量训练模块从文件系统中加载初始聚 类模型和用户关联模型;接着,接收流式数据源的数据,进行转换加载到增量 训练模块中;再者,增量训练模块批量加载流式数据,并进行增量训练聚类模 型;最后,由在线推荐模块根据用户和物品匹配到所对应的聚类,进行实时推 荐。

针对目的2:一种基于聚类的流式推荐系统,所述推荐系统的架构包括离 线系统、实时系统以及在线系统,该推荐系统还包括上述的基于聚类的流式推 荐引擎,所述的流式推荐引擎运行在推荐系统的系统架构中。

优选的,所述的基于聚类的流式推荐引擎中的离线训练模型运行在推荐系 统架构中的离线系统中,而增量训练模型和在线推荐模块运行在推荐系统架构 中的实时系统中;而在推荐系统架构中的离线系统与实时系统之间通过推荐系 统的文件系统来完成数据交换。

针对目的3,一种基于聚类的流式推荐方法,该推荐方法通过构建增量式 的聚类,再根据各聚类内部的关联关系产生实时推荐。

优选的,所述流式推荐方法包括如下步骤:

1)初始化离线聚类模型:对已有的大规模数据集,进行聚类分析,产生 聚类模型;

2)初始化离线用户关联模型:对已有的大规模数据集,进行关联分析, 产生用户关联模型;

3)构建在线推荐模型:对外部系统提供在线调用接口服务;并构建实时 转发系统,实时地将外部接口的调用转发给增量式聚类模型;

4)构建增量式聚类模型:基于流式数据对聚类模型进行增量训练,产生 增量式聚类模型;

5)在增量式聚类模型下,根据各聚类内部的关联关系产生实时推荐结果。

优选的,所述步骤1)中聚类模型具体通过如下步骤形成:

(11)将每个用户和商品,根据它曾打过或被打过的标签,生成多维度的 向量,最终产生了全量的用户和商品的向量集;

(12)从步骤(11)产生的多维度的向量集中随机选择k个点作为初始聚类 中心;

(13)对于数据集中的每一个点x,计算它与选择的聚类中心的距离D(x);

(14)选择一个新的数据点作为新的聚类中心;

(15)重复步骤(13)和(14)直到k个聚类中心被选出来;

(16)利用这k个初始的聚类中心来运行标准的k-means算法。

优选的,所述步骤2)中通过局部敏感哈希的方法计算出用户相似度矩阵 由此来构成用户关联模型,具体步骤如下:

(21)使用Box-Muller方法产生k个随机向量;

(22)将每个用户的单位稀疏向量与这些随机向量做乘积,根据正负结果 得到相对的比特位;

(23)将每个用户的k个比特位分成t个块,每个块有b位比特位;如果 同一个块中的比特位相同,就把这些用户放到一个候选桶里;其中,每个候选 桶中存放相似的用户;

(24)每个候选桶的用户都相互为候选项,通过将每个候选桶内的相似用 户做全排列,求出全相似对;

(25)对候选桶内的伪候选对,根据用户设置的最小相似度阈值进行过滤。

优选的,所述步骤4)中在构建增量式聚类模型时,基于腐蚀因子更新聚 类中心与聚类模型进行,其聚类中心的更新公式如下:

Ct+1=ctnt+xtmtnt+mt---(1)

nt+1=nt+mt(2)

其中,Ct表示前一个模型的聚类中心,Nt表示聚类节点个数,Xt表示新提 交的批数据的聚类中心,Mt表示加入聚类的批数据的节点个数,a表示之前数 据的腐蚀系数。

本发明提供的基于聚类的流式推荐方案,其有效结合聚类结构和协同过滤 方法的优点,能够在保证推荐准确率的同时,提高推荐结果的领域特性与关联 特性,提高推荐准确性。

附图说明

以下结合附图和具体实施方式来进一步说明本发明。

图1为基于聚类的流式推荐引擎的架构图;

图2为基于聚类的流式推荐引擎的离线计算的流程图;

图3为基于聚类的流式推荐引擎的实时计算模块的流程图;

图4为基于离线-在线-实时构架的推荐系统的架构图;

图5为基于聚类的流式推荐的总流程图;

图6为基于聚类的流式推荐时的离线聚类算法的流程图;

图7为基于聚类的流式推荐时的离线用户关联模型算法的流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解, 下面结合具体图示,进一步阐述本发明。

参见图1,其所示为本实施例中提供的基于聚类的流式推荐引擎的架构图。

该推荐引擎其通过构建一个增量式的聚类,利用基于聚类结构的推荐算法 来进行个性化推荐。由图可知,本推荐引擎的系统架构分为离线计算层109和 实时计算层110,并且主要由离线训练模型101、增量训练模型102以及在线 推荐模块103三部分相配合。

其中,离线训练模型101,其运行在推荐引擎的离线计算层109中,通过 数据ETL模块104从持久化数据源(如HBase)106中,进行数据抽取、转换、 加载,并据此进行离线训练计算,训练出初始聚类模型和用户关联模型,并将 初始聚类模型和用户关联模型写入到文件系统(HDFS)107中。

增量训练模型102,其运行在推荐引擎的实时计算层110中,该模型从文 件系统107中加载初始聚类模型和用户关联模型,同时通过数据采集模块105 接收流式数据源(如Kafka)108的数据,进行转换和加载,据此加载流式数 据对聚类模型进行增量训练,产生增量式聚类模型。

在线推荐模块103,其同样在推荐引擎的实时计算层110中,基于增量式 聚类模型和用户关联模型进行实时现在推荐。

据此构成的推荐引擎,其整个运行过程分为两部分:离线计算部分和实时 计算部分,分别在引擎的离线计算层109和实时计算层110中进行。

对于离线计算层109中进行的离线计算部分,其具体步骤如下(参见图2):

(2-1)从持久化数据源(如HBase)中,进行数据抽取、转换、加载到离 线训练模块中。

(2-2)离线训练模块中,基于本发明提出的聚类模型训练出初始聚类模 型和用户关联模型。

(2-3)将聚类模型序列化写到文件系统(如HDFS)中。

而在实时计算层110进行的实时计算部分,其具体步骤如下(参见图3):

(3-1)增量训练模块从文件系统(如HDFS)上,加载初始聚类模型和用 户关联模型。

(3-2)数据采集模块接收流式数据源(如Kafka)的数据,进行转换加载 到增量训练模块中。

(3-3)增量训练模块会批量加载流式数据,针对加载的初始聚类模型进 行增量训练,得到增量式聚类模型。

(3-4)在增量式聚类模型下,在线推荐模块基于用户关联模型,在接收 到用户推荐请求后,根据用户和物品匹配到所对应的聚类,基于推荐算法进行 实时推荐。

基于上述的推荐引擎,本实例中还提供一种基于聚类的流式推荐系统。

参见图4,其所是为该基于聚类的流式推荐系统的系统架构图。由图可知, 该推荐系统200整体基于离线-在线-实时架构,其主要包括离线系统201、实 时系统202和在线系统203,同时在离线系统201、实时系统202和在线系统 203构成的系统架构中运行上述的聚类的流式推荐引擎。

其中,实时系统202,是对用户的行为产生实时反馈的系统,能更快地响 应最近的事件和用户交互,但必须实时完成,主要包括实时的自适应个性化推 荐服务。在本系统中,实时地接收在线系统和消息中间件传递过来的消息,实 时的更新用户商品聚类与用户关联关系矩阵。

具体的,该实时系统202主要包括数据实时采集模块202a、增量训练模块 202b、在线推荐模块202c、上下文过滤模型202d以及实时计算服务模块202e, 其中,实时采集模块202a、增量训练模块202b、在线推荐模块202c即为上述 的流式推荐引擎100中的数据采集模块105、增量训练模型102以及在线推荐 模块103,其中实时采集模块202a连接流式数据源(kafka)204,接收流式数 据源(如Kafka)的数据,进行转换,并加载到增量训练模块202b。

增量训练模块202b,其连接到推荐系统的文件系统(HDFS)206,以加 载初始聚类模型和用户关联模型,并根据加载流式数据对聚类模型进行增量训 练,产生增量式聚类模型。

在线推荐模块202c,基于增量式聚类模型和用户关联模型进行实时现在推 荐。

实时计算服务模块202e,其与增量训练模块202b、在线推荐模块202c、 上下文过滤模型202d数据连接,并与在线系统203的预测器203a数据相接。

离线系统201,是每日定时运行的大规模计算的系统,对于数据数量和算 法复杂度限制更少,并以批量方式完成,没有很强的时间要求。该系统完整的 处理的事项主要包括用户行为数据的流式ETL处理,推荐物品的相似度模型 的计算,推荐模型的初始化计算和用户商品初始聚类和初始关联矩阵。

该离线系统201主要包括数据TEL模块201a、离线训练模块201b、离线 推荐算法模块201c、离线计算服务模块201d以及外部系统导入服务模块201e。

数据TEL模块201a和离线训练模块201b即为上述的流式推荐引擎100 中的数据TEL模块和离线训练模块。

其中,数据TEL模块201a其连接于持久化数据源(HBase)205,并与离 线训练模块201b数据连接,离线训练模块201b与离线推荐算法模块201c数 据连接。

离线计算服务模块201d控制连接数据TEL模块201a、离线训练模块201b、 离线推荐算法模块201c,并与文件系统(HDFS)206数据连接。

外部系统导入服务模块201e,其连接持久化数据源(HBase)205,并连 接到外部系统208。

在线系统203,是在实时系统背后运行的辅助系统,可以执行类似于在线 计算的方法,但又不必以实时方式完成,包括用户行为数据的收集,实时地将 用户请求转发给实时系统,并相应更新数据库事务。

具体的,该在线系统203主要包括预测器203a、更新器203b以及请求处 理模块203c。

其中,更新器203b连接到流式数据源(kafka)204和持久化数据源(HBase) 205,而预测器203a连接到实时系统202中的实时计算服务模块202e。

请求处理模块203c分别与预测器203a和更新器203b数据详解,并连接 到Web服务系统207。

由此构成的推荐系统,其在离线-在线-实时构架的基础上整合基于聚类的流 式推荐引擎,由此在离线计算过程中进行初始化聚类模型和关联模型的计算, 在增量训练模型中根据实时数据进行增量式模型训练,并通过在线推荐模块提 供用户调用接口,将整个推荐系统整合在一起,从而能结合聚类结构和协同过 滤方法的优点,通过聚类结构将用户和商品分类,通过基于协同过滤方法挖掘 各用户和商品间的关联关系。

故,该推荐系统能够在保证不影响推荐准确率的同时,保证在线推荐的实 时性。本推荐系统能够大数据膨胀的环境下,实现自适应个性化推荐,其进行 推荐的总流程步骤如下(参见图5):

(5-1)初始化离线聚类模型:对已有的大规模数据集,进行聚类分析, 产生聚类模型;

(5-2)初始化离线用户关联模型:对已有的大规模数据集,进行关联分 析,产生用户关联模型;

(5-3)构建在线推荐模型:用于对外部系统提供在线调用接口服务;并 构建实时转发系统,实时地将外部接口的调用转发给增量式聚类模型;

(5-4)构建增量式聚类模型:基于流式数据对聚类模型进行增量训练, 产生增量式聚类模型;

(5-5)在增量式聚类模型下,根据各聚类内部的关联关系产生实时推荐 结果。

其中,步骤(5-1)在初始化离线聚类模型时,具体的步骤如下(参见图6):

(6-1)首先,将用户和商品根据他们对每个商品打的标签,生成多维度 的向量。

(6-2)接着,根据产生的多维度的向量集,从输入的数据点集合中随机 选择一个点作为第一个聚类中心。

(6-3)对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的 聚类中心)的距离D(x)。

(6-4)选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大 的点,被选取作为聚类中心的概率较大。

(6-5)重复步骤(3)和(4)直到k个聚类中心被选出来。

(6-6)利用这k个初始的聚类中心来运行标准的k-means算法。

步骤(5-2)在初始化构建离线用户关联模型时,主要是挖掘用户与商品 的关联关系,据此生成用户间的相似度矩阵,同时通过局部敏感哈希的方法计 算出用户相似度矩阵的。具体的构建过程如下(参见图7):

(7-1)使用Box-Muller方法产生k个随机向量。

(7-2)将每个用户的单位稀疏向量与这些随机向量做乘积,根据正负结 果得到相对的比特位。

(7-3)将每个用户的k个比特位分成t个块,每个块有b位比特位;如果 同一个块中的比特位相同,就把这些用户放到一个候选桶里。其中,每个候选 桶中存放相似的用户。

(7-4)每个候选桶的用户都相互为候选项,通过将每个候选桶内的相似 用户做全排列,求出全相似对。

(7-5)对候选桶内的伪候选对,根据用户设置的最小相似度阈值进行过 滤。

步骤(5-4)在构建增量式聚类模型时,主要是基于腐蚀因子更新聚类中 心与聚类模型进行,其聚类中心的更新公式如下:

Ct+1=ctnt+xtmtnt+mt---(1)

nt+1=nt+mt(2)

其中,Ct表示前一个模型的聚类中心,Nt表示聚类节点个数,Xt表示新提 交的批数据的聚类中心,Mt表示加入聚类的批数据的节点个数,a表示之前数 据的腐蚀系数。

步骤(5-5)中根据各聚类内部的关联关系产生实时推荐结果时,其是针 对之前的训练出的聚类。在各聚类内部,根据关联关系生成实时的推荐结果。

其具体的实现过程如下:

1)加载步骤(5-2)中最终生成的用户与物品的相似度关联关系;

2)对于目标待推荐的用户,找到与其相似的用户;

3)对于所有相似用户曾有过购买、收藏行为的物品,以它们之间的相似 度为权值计算出目标待推荐的用户对那些物品的兴趣值。

根据上述方案内容可知,基于本实例提供的推荐方案,能够建立一个在保 证不影响推荐准确率的同时,保证在线推荐的实时性的推荐系统,其能够进行 自适应个性化的推荐,以适应大数据膨胀环境下的需求。该推荐系统实际为一 种建立在数据分析和数据挖掘技术上的商务智能应用,能够基于用户行为数据 分析用户兴趣偏好并进行个性化计算,引导用户发现自己的真实需求。

另外,本方案在具体实现时,其可为纯软件架构,可以透过程序代码布设 于实体媒体,如硬盘、软盘、光盘片、或是任何机器可读取(如智能型手机、 计算机可读取)储存媒体,当机器加载程序代码且执行,如智能型手机加载且 执行,机器成为用以实行本系统的装置。另外,本方案也可以程序代码型态透 过一些传送媒体,如电缆、光纤、或是任何传输型态进行传送,当程序代码被 机器,如智能型手机接收、加载且执行,机器成为用于实行本系统的装置。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业 的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中 描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明 还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本 发明要求保护范围由所附的权利要求书及其等效物界定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号