当前位置:首页 期刊杂志

时空大数据推荐系统设计与实现*

时间:2024-05-19

杨娜,赵广杰,张多才,闻鹏

(西安航天天绘数据技术有限公司,陕西 西安 710061)

时空数据是具有时间和空间等属性的数据统称,时空数据无所不在,从空天地专用传感器到物联网中各类传感器,会产生前所未有的时空大数据。以空间卫星为例说明遥感大数据,目前全球在轨卫星总共约3 300 颗,涵盖陆地资源、气象海洋军民商卫星,可产生多源遥感卫星大数据。多源遥感卫星数据、地理测绘数据、全球高清影像数据、海量传感器数据等组成空天地时空大数据。同时呈现过量的数据信息,用户无法从中获取所需要的部分,信息使用效率反而降低。传统的搜索引擎往往是根据用户输入的数据字符串对信息进行检索,难以满足用户的个性化需求,而推荐系统是解决信息过载最有效的方式。

学术界对推荐系统进行了大量研究,本文概述了针对大数据、用户画像、数据内容、地理空间位置推荐系统的相关研究。基于大数据的推荐系统已经成为了移动互联网的研究热点,文献[1-2]分别基于大数据计算框架设计了用户画像平台、基于用户画像的推荐系统;文献[3-4]通过采集用户信息建立用户个人画像,使用推荐算法向用户推荐课程资源或阅读资源,提高了推广成功率;文献[5]提出基于用户兴趣的个性化推荐系统设计方案,分析用户访问的新闻数据,提取新闻的特征词,建立用户兴趣模型,实现了新闻个性化推荐;文献[6]设计和实现的推荐系统,利用系统页面访问次数与页面停留时间,产生向用户推荐的频繁项集;文献[7]提出了基于数据挖掘的上下文感知个性化旅游推荐系统,利用用户照片地理位置上下文,提取用户历史旅游地点,对用户感兴趣的旅游地点进行推荐;文献[8]设计了基于情景预测的实时营销系统,关注店面地理位置和考虑用户消费周期,提高了推荐算法精度;文献[9]通过视频主题和用户画像自动地生成兴趣播单,向用户推荐电影,帮助用户发现感兴趣的视频,提高平台流量。以上文献分别利用大数据平台、推荐内容的地理位置及内容信息、用户行为习惯等设计了推荐系统,目前未检索到针对时空大数据的推荐系统。

本文针对时空大数据共享场景,采用大数据计算框架和自然语言处理等技术,设计了时空大数据推荐系统,并且考虑了产品数据的位置、时间信息,对用户行为进行了分析。

1 相关技术

1.1 Apache Spark 计算框架

Apache Spark 是一个开源的用于分布式计算的通用框架,为批处理、微批处理和交互式处理提供高性能的服务。Spark 被优化在内存中运行,能够更快地处理数据。Spark 涵盖各种工作负载,包括批处理应用程序、迭代算法、流式处理和交互式查询。

Spark Core 是Spark 框架的基础通用执行引擎,所有其他组件都是基于此引擎实现,它在外部存储系统中提供内存计算和数据集引用服务。

Spark Streaming 是Spark 核心API(Application Program Interface,应用程序接口)的一个扩展,用于流式数据处理。它利用Spark Core 的快速调度功能来执行流式分析,对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。能够接收实时的输入数据流,然后将这些数据切分为批数据,提供给Spark引擎进行处理,Spark 引擎对数据进行处理生成运算结果。数据可以从许多来源(如Kafka,它是由Apache软件基金会开发的一个开源流处理平台)获取,并且可以使用复杂的算法进行处理,这些算法用map、reduce、join 和window 等高级函数表示。

Spark SQL 将SQL(Structured Query Language,结构化查询语言)查询与Spark 程序结合,为结构化数据处理提供支持,将结构化数据作为Spark 中的RDD(Resilient Distributed Datasets,分布式数据集)进行查询。它提供Python、Scala 和Java API,能够运行SQL 查询及复杂的分析算法。它提供多种方式与Spark SQL 进行交互,包括SQL、Dataset AP 等。

1.2 自然语言模型

本文使用的自然语言模型有词袋模型、词向量模型。词袋模型将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的,完全丢失语序关系,只要在上下文之内即可。word2vec 是基于神经网络的语言模型,这种词向量模型能够将自然语言中的词转化为词向量,语义相似的词会有相似的向量表示。

word2vec 利用语料库训练出的word2vec 模型,可用来映射每个词到一个向量,可用来表示词对词之间的关系。根据词语相似度构建模型,对语法分析、文本分析等有很大的提升。利用语料库,对word2vec 词向量模型进行训练,将完成的训练模型文件保存,输出词向量模型文件。HanLP(Han Language Processing)是由一系列模型与算法组成的Java 工具包,设计词袋模型、word2vec 词向量模型等。

2 系统设计

2.1 系统架构设计

通过采集分析用户行为数据,引接时空产品数据,设计时空大数据推荐模型,实现个性化推荐、热门推荐、产品相似推荐等应用。系统包括数据采集层、数据处理层、模型层和应用层,其总体架构设计如图1 所示。

图1 时空大数据推荐总体设计

2.1.1 数据采集层

完成用户行为数据、用户属性数据和外部数据源数据等各类数据的采集,是推荐系统模型分析的数据来源。其中用户行为数据包括搜索日志数据、浏览记录数据,外部数据源采集包括资源目录数据、产品数据、POI(Point Of Interest,兴趣点)数据。

其中,POI数据是地理信息系统中的一个术语,是一切可以抽象为空间点的现实世界的实体,每个POI包含名称、类别、坐标和分类4 方面信息,例如名称为“可可西里盐湖地区”就是一个POI。

2.1.2 数据处理层

对采集的数据进行分析处理,构建用户画像,提取数据产品特征,形成用户画像库和产品特征库。

2.1.3 模型层

分析用户行为数据和产品数据,结合用户画像库和产品特征库,构建基于用户画像的个性化推荐模型、最热推荐模型、产品相似推荐模型,为应用层提供算法支撑。

2.1.4 应用层

基于模型层提供的算法,实现首页个性化推荐、首页最热推荐、产品详情页相似推荐。

2.2 推荐系统流程

推荐系统由数据采集到推荐服务的实现流程如图2 所示。

图2 推荐系统流程

主要实现步骤如下:①用户行为数据采集。通过埋点的方式,获取用户搜索产品、浏览产品详情等行为数据,将采集数据存储到消息中间件中。②产品数据采集。利用ETL(Extract Transform Load,数据仓库技术)工具,连接外部数据源,采集外部数据源产品数据,将采集数据存储到推荐系统产品库中,实现产品数据采集。③用户画像构建。从消息中间件读取用户行为数据,并解析存储,同时生成用户标签,包括用户角色标签、用户兴趣标签,构建用户画像库。④产品特征提取。产品特征提取包括产品标签提取和数据产品关联。其中,产品标签提取包括图像的目标标签、专题产品标签、分类标签;数据产品关联包括产品数据与POI数据的关联。⑤推荐服务引擎。基于用户画像的个性化推荐、最热推荐、产品相似推荐组成推荐服务引擎。其中,基于用户画像的个性化推荐是通过计算用户兴趣标签与产品相似性,生成产品推荐列表;最热推荐是基于Spark SQL 技术,对产品浏览数据进行统计分析,获取当前最热门的产品数据;产品相似推荐是根据产品特征相似度,向用户返回浏览产品的推荐列表,实现产品相似推荐。⑥推荐应用。将推荐结果通过Web 服务方式展示给用户,用户在系统页面查看推荐结果,从而实现首页推荐和详情页推荐。

3 系统功能设计与实现

3.1 数据采集层

数据采集层主要实现用户行为数据采集、用户属性数据和外部数据源数据采集。

3.1.1 用户行为数据采集

用户行为数据主要包括搜索记录数据和浏览记录数据,通过埋点的方式实现用户行为数据采集,实现过程如下。

用户在浏览器页面输入关键词搜索数据或点击数据详情触发埋点服务调用,将行为记录数据发送到消息中间件,数据采集服务从消息中间件提取用户行为数据,将行为数据存储到缓存数据库中,实现行为数据采集。采用异步方式实现对用户行为信息的采集,提高服务并发量。用户行为数据格式如表1 所示。

表1 用户行为数据格式

3.1.2 用户属性信息采集

用户属性信息主要包括用户所属部门、角色等信息,其中用户角色分为图像产品人员、专题产品人员等。通过用户登入注册服务,将用户属性信息输入到消息中间件中,推荐系统从中间件中提取用户属性信息,采集用户属性信息。

3.1.3 外部数据源采集

外部数据源数据主要包括资源目录数据、产品数据、POI数据,其中产品数据包括图像产品数据、专题产品数据等。采用ETL 采集工具,配置数据采集任务,定时采集数据,将外部数据源产品信息采集到推荐系统数据库中。采集任务配置的主要步骤包括增加数据源,选择源端、目的端数据库表,配置字段映射,提交采集任务配置和采集调度策略配置。定时调度执行采集任务,实现对外部数据源数据的采集。

3.2 数据处理层

3.2.1 用户画像构建

用户画像是根据用户社会属性、用户行为等信息抽象出的一个标签化的用户模型。构建用户画像的核心工作即是给用户贴“标签”,用标签来描述用户的行为和特征,而标签是通过对用户信息分析而得来的高度简练的特征标识,是一种简洁的用于描述用户信息的方法。用户画像构建步骤如下。

用户画像标签体系构建:通过分析时空大数据用户静态、动态数据,建立数据分类体系,设计标签形式。标签形式分为用户静态标签和用户动态标签。其中,用户静态标签根据用户的角色信息得到;用户动态标签是对用户行为进行分析挖掘得到的,包括兴趣点标签、兴趣事件标签、兴趣目录标签。用户画像标签体系如图3 所示。

图3 用户画像标签体系

用户行为分析及动态标签生成:结合构建的用户标签体系,从用户行为数据中提取关键词,获取用户感兴趣的兴趣点、兴趣事件、兴趣目录。采用NLP(Nature Language Processing,自然语言处理)等技术对采集的用户行为数据进行分析,生成用户动态标签,构建用户画像。

具体实现步骤为:基于采集的用户搜索记录数据,利用NLP 技术提取兴趣点、兴趣事件、兴趣目录,并按搜索时间倒序存储到redis 缓存库中;利用用户产品浏览记录数据,查询获取产品元数据信息,将用户浏览记录、产品元数据转换为用户、兴趣点、事件、兴趣目录关键词格式,按时间倒序存储到redis 缓存库中,形成用户画像库。

3.2.2 数据产品特征提取

数据产品特征主要包括产品类型、关联兴趣点、关联事件特征、所属资源目录。针对图像产品、专题产品等不同数据类型,分别研制产品POI数据关联模块和专题产品提取模块,实现不同数据的产品特征提取,将数据特征存储到产品特征库中。数据产品特征组成如图4 所示。

图4 数据产品特征组成图

产品POI数据关联:针对图像产品数据,采用ETL将图像产品元数据与POI数据关联,关联的POI名称作为图像产品的特征。

具体实现步骤为:针对采集的图像产品元数据,提取图像产品经纬度坐标,计算图像经纬度坐标与兴趣点坐标距离,当距离小于阈值,该兴趣点与图像产品是关联,将关联的兴趣点ID 与名称存储到图像产品元数据库中,实现图像产品与POI数据关联。

专题产品提取:针对专题产品数据,利用NLP 技术智能提取专题产品特征信息,提取兴趣点-兴趣事件-时间关键信息,并存储到专题产品数据库中;引接纯文本专题数据,提取文本数据中的摘要信息并存储到产品库中。

3.3 模型层

模型层包括基于用户画像的个性化推荐模型、最热推荐模型和产品相似分析模型3 种推荐模型。其中,基于用户画像的个性化推荐模型为系统首页“猜你喜欢”提供推荐服务接口,最热推荐模型为系统首页“最热推荐”提供推荐服务接口,产品特征相似度分析模型向数据产品详情页提供推荐服务接口。

3.4 应用层

通过应用层展示时空数据共享推荐系统推荐的数据,包括首页个性化推荐、首页最热推荐和产品详情页相似推荐3 种推荐应用。

3.4.1 首页个性化推荐

通过基于用户画像的个性化推荐模型,实现个性化推荐Web 服务接口,该服务返回topn个与用户标签相似度最高的数据产品,将个性化推荐数据展示到系统首页“猜你喜欢”推荐列表下。

3.4.2 首页最热推荐

通过最热推荐模型,对用户行为数据进行统计分析,实现最热推荐服务。用户访问系统首页,发起最热推荐请求,返回推荐请求数据,将最热推荐数据展示到系统首页“最热推荐”列表下。

3.4.3 产品详情页相似推荐

用户通过系统查询检索功能,获取数据产品列表,点击感兴趣的产品,进入产品详情页,详情页面右侧部分,展示与产品相似的数据产品列表。

通过word2vec 语义查询,构造产品相似推荐模型,实现产品相似推荐服务,该服务接口返回与浏览产品最相似的topn个产品列表,向用户展示推荐的相似产品列表。

4 推荐服务引擎

在基于用户画像个性化推荐模型、最热推荐模型和产品相似分析模型基础上,设计推荐服务引擎,为应用层提供推荐接口。

4.1 基于用户画像的个性化推荐分析

若数据产品特征与用户标签相同或者相似,那么它们就是有内在相关性的。所以可以利用已提取的数据产品特征,分析数据产品与用户标签的相似程度,进而得出与用户相似度高的数据产品列表。

基于数据处理层生成的用户画像库和数据产品特征库,构建基于用户画像的个性化推荐模型,对用户产品喜好程度进行预测,向用户推荐感兴趣的数据。

根据发起推荐请求用户ID,获取该用户的标签,计算用户标签与数据产品特征的相似度,并对用户的相似产品进行倒序排列,获取最相似的topn个产品。与用户最相似的topn个数据产品计算API如下:

式中:x、y为用户标签内容和最相似产品个数变量。

基于用户画像个性化推荐的实现过程如图5所示。

图5 基于用户画像个性化推荐的实现过程

实现步骤如下:用户u 访问系统首页,发起个性化推荐请求;系统接收到推荐请求,根据用户的ID 从用户画像库查找到用户u 的画像标签;根据数据产品特征库,进行数据产品与用户画像的相似度计算;将计算得出的产品相似度倒序排列,向用户返回topn个相似度最高的产品列表。

4.2 最热推荐分析

对采集的用户行为数据进行分析,统计数据产品访问次数,构建最热推荐分析模型。实现过程如下:利用Spark SQL 框架,研制最热推荐分析模块,从消息中间件中读取用户行为数据,基于统计模型进行数据产品访问次数统计,将分析结果存储到Redis 缓存数据库中。用户发起最热推荐请求,系统从缓存中获取访问次数最高的n个数据产品,通过应用服务向用户展示推荐列表。

4.3 产品相似分析

用户已经浏览过或正在浏览当前产品,因此剔除候选集中当前浏览的产品。获取候选集产品列表,根据word2vec 词向量模型,将产品特征转为词向量,得到产品特征词向量列表。可以用一个词或多个词的查询语句来得到产品特征库中与查询产品特征语义上最相似的topn个产品(产品ID 及其相似度),实现过程如下。

4.3.1 构造产品文档向量模型

首先需要加载一个预先训练好的word2vec 词向量模型(通过开源网站下载获取模型文件),然后加载待查询的产品列表,将产品特征转化为特征向量。

产品特征向量是基于词向量,将一个产品特征列表转换成向量的模型(词袋模型)。每个产品由多个特征标签组成,分别将产品特征标签转化为词向量,词向量相加组成产品特征向量,计算公式如下:

式中:y为产品的特征向量;xi为产品特征标签向量变量。

将产品列表中的每个产品特征转化为产品特征向量,组成产品特征向量集合,计算公式如下:

式中:map(y)为计算得出的产品特征向量集合;yj为产品特征向量变量。

4.3.2 语义查询

可以用一个产品特征词或多个特征词的查询语句来得到产品特征向量集合中与查询特征语义上最相似的topn个产品(ID 及其相似度)。语义查询步骤如下。

根据产品特征进行onehot 编码并转换为词袋向量,根据word2vec 词向量模型,将待推荐产品特征转为特征向量,然后通过cosine 相似度公式,计算产品词向量列表与待推荐产品词向量的相似度。相似度计算公式如下:

式中:T(x,y)为产品x与产品y的相似度;xi和yi分别为产品x与产品y的特征值变量。

计算该产品特征与产品列表的相似度,倒序排列,获取相似度最高的n个产品,向用户返回产品推荐列表。

5 结束语

本文分析了用户的行为数据,根据用户的兴趣特点和浏览行为,结合产品特征信息,设计了基于用户画像的推荐模型、最热推荐模型和产品相似推荐模型,基于推荐模型实现推荐应用向用户推荐感兴趣的产品信息。随着产品种类扩展和数据量增加,下一步采用离线任务、实时任务相结合的方式设计推荐系统,离线任务计算生成推荐候选集,实时任务从候选集中过滤排序推荐列表。进一步根据系统长时间运行数据,计算推荐算法的准确率和召回率,提高算法精度和系统体验,从而更好地服务于时空大数据共享服务平台。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!