开篇:润墨网以专业的文秘视角,为您筛选了一篇基于分布式流处理框架下的移动健身管理系统研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要: 基于实时推荐的移动健身管理平台,将健身视频与健身管理结合,同时满足用户学习健身方法的需求和科学管理健身数据的需求。该系统实现了基于Android平台的移动健身管理应用,具备科学记录用户健身和饮食数据的功能和视频分享功能。通过对目前已有推荐系统算法的研究,根据系统和开发平台的特点,设计出一种实时视频推荐算法,然后基于目前流行的分布式流处理计算框架ApacheStorm实现了实时视频推荐引擎,移动健身管理应用提供视频实时推荐服务。
关键词: 健身管理; 视频; 实时推荐; 安卓
中图分类号: TN911?34; TM417 文献标识码: A 文章编号: 1004?373X(2016)21?0132?05
Research on mobile fitness management system based on
distributed stream processing framework
SUN Kaitao
(College of Application Engineering, Henan University of Science and Technology, Sanmenxia 472000, China)
Abstract: On the basis of the mobile fitness management platform based on real?time recommendation, the combination of fitness video and fitness management can simultaneously meet the requirements of learning fitness method and scientific fitness data management for users. The system realized the application of mobile fitness management based Android platform, and has the functions of scientifically user fitness and diet data recording, and video sharing. According to the study of the available recommendation system algorithm and characteristics of system and development platform, a real?time video recommendation algorithm was designed. The real?time video recommendation engine was realized based on the popular distributed stream processing computing framework ApacheStorm, in which the mobile fitness management application provides the video real?time recommendation service.
Keywords: fitness management; video; real?time recommendation; Android
0 引 言
互联网上有大量关于各类健身运动等资源供参考,能够帮助人们更合理地安排健身计划和饮食计划。移动设备和移动互联网的普及使这些海量资源可以随时随地被获取,满足了人们对运动和饮食信息的即时性需求。然而面对海量的信息资源,用户很难在短时间内获取符合自身需要的信息,有价值的资源有很多,帮助用户找到符合自身需求的信息至关重要。推荐系统正是为解决这个问题而产生的。推荐系统可以通过采集和分析用户的历史浏览数据,从大量视频中找到符合用户需求的视频,生成推荐列表返回给用户。
1 系统概要设计
1.1 系统架构设计
(1) 系统物理架构
本系统实现了客户端/服务器(C/S)和浏览器/服务器(B/S)两种软件架构。普通用户通过Android移动客户端与服务器进行交互,实现健身管理和视频观看功能;系统管理员通过浏览器与服务器进行交互,对基础数据和用户进行管理。实时推荐系统的主节点运行在应用服务器上,其他工作节点运行在分布式集群上,为用户提供实时视频推荐服务。
(2) 系统逻辑架构
移动健身管理平台中有用户和后台管理员两种角色,分别通过移动客户端和浏览器与服务器交互。系统的结构自顶向下分为视图层、控制层、模型层、基础服务层和数据层。移动客户端的视频推荐功能由独立的实时视频推荐系统和服务器通过Redis数据库交互,为视频推荐功能提供用户的推荐列表。系统的架构图如图1所示。
实时视频推荐需要经过离线计算和在线计算两个步骤。离线计算以用户的历史行为数据为注入,建立用户兴趣模型,生成离线推荐列表。由于用户不断有新的行为,离线推荐列表需要每天更新一次。在线计算综合离线推荐结果和用户的当前行为,生成实时推荐列表。
1.2 系统功能模块设计
1.2.1 用户功能模块设计
(1) 编辑运动日志。用户查看运动日志,可选择添加新的运动项目或删除已有项目。
(2) 同步健身数据。用户可以手动同步健身数据到服务器,防止数据丢失。
(3) 获取视频推荐。客户端将获取视频推荐列表的请求发送给服务器,响应的servlet调用视频推荐类,调取数据库中的视频推荐列表返回给客户端。
(4) 播放视频。用户进入视频主页,查看视频列表。选择一个视频后,系统分别加载视频和视频简介等信息。
1.2.2 后台管理功能模块设计
(1) 数据更新模块
管理员可对运动和食物数据进行更新。首先查看运动数据,输入要添加的运动项目。如果项目已经存在则不能添加,需要重新输入。
(2) 视频管理模块
视频首页由管理员维护的视频列表,固定的显示在客户端视频页面的上方。管理员登陆系统后,查看视频列表,可选择添加视频。
1.3 数据库设计
1.3.1 关系数据库设计
移动客户端产生的用户数据,如训练计划、运动日志和饮食日志等存储在Android客户端的SQLite数据库中。这些数据需要被用户频繁地查看和编辑,因此把数据存放在本地可以提高数据的加载速度,减少从网络中读取数据所耗费的时间。这些数据要定期同步至服务器端的MySQL数据库,防止用户信息丢失。MySQL数据库还存有视频、视频评论、用户收藏等信息。
1.3.2 非关系数据库设计
(1) 用户事件队列。用户每一次点击视频、收藏视频的行为都会被存储到事件队列中。
(2) 相似度矩阵。相似度矩阵存储任意两个视频的相似度,使用hash实现。
(3) 用户评分向量。一个用户对所有视频的评分构成一个[n]维向量,同样使用hash数据结构实现。用户ID作为键,视频ID作为字段,存储对应的评分。
2 推荐系统算法及评测方法
2.1 基于内容的推荐
基于内容的推荐只需要用户模型和项模型,不受到项的评分信息数量少的约束,这点是协同过滤系统无法实现的。由于只关注内容,因此不会降低新项目、冷门项目被推荐给用户的几率,有助于增加推荐结果的新颖度。但基于内容的推荐系统只适用于可描述内容的项推荐,不适用于视频、声音、图片等特征提取困难的对象。
2.2 协同过滤算法
协同过滤算法中最重要的方法是基于邻域的方法,主要包含基于用户的协同过滤(User?based Collaborative Filtering,UserCF)和基于项的协同过滤(Item?based Collaborative Filtering,ItemCF)两类算法。
推荐系统当中有两类研究对象,一类是用户(user),另一类是项(item)。用户和某些项具有一定关系,这个关系可以被描述成一个数值。
用户和项可以构成一个效用矩阵(utility matrix),矩阵中每个值代表某用户对某个项的喜爱程度。如图2所示的效用矩阵,代表用户a、b、c对6部电影的评分,其中空白的部分表示用户还没有对电影评分。推荐系统的一个主要目标就是预测空白部分的数值,把分数最高的前[n]个项推荐给用户。
2.2.1 基于用户的协同过滤
基于用户的协同过滤算法的工作方式是首先找到和目标用户的兴趣相似的用户集合,然后找到这个集合中用户喜爱的项中目标用户不知晓的项推荐给该用户。判断两个用户的兴趣是否相似,通过判断用户对相同项的行为是否相似得出。
2.2.2 基于项的协同过滤
基于项的协同过滤算法广泛地应用于各种推荐系统中,它基于的假设是两个项被同样的用户喜爱则具有很高的相似度。基于项的协同过滤主要分为两步。计算项之间的相似度,然后根据项的相似度和用户的行为数据生成推荐列表。
2.3 健身视频实时推荐系统算法设计
(1) 离线算法的选择
基于用户的协同过滤推荐适合用户个性化需求不太丰富但时效性较强的场合。相反,基于项的协同过滤具有很强的发掘长尾物品的能力,适合用户个性化需求强烈的领域。基于项的协同过滤推荐可以解决新用户的冷启动问题。相比较而言,基于用户的协同过滤要先更新用户的行为数据。
目标系统的用户个性化需求强烈,对新用户的冷启动有要求,由于对时效性没有要求,因此可以容忍新项的冷启动问题。本系统选择基于项的协同过滤算法作为推荐系统的离线算法。
(2) 实时推荐过程算法设计
要让实时推荐的结果反应用户当前兴趣,需要将用户的点击行为和收藏行为转化成量化的喜爱程度。本算法用可调节参数[a]和[b]表示用户对未评价过视频的喜爱程度,[a]表示用户对点击的视频的喜爱程度,[b]表示用户对收藏的视频的喜爱程度。令用户对视频[i]的预测兴趣度为[Pui,]定义如下:
[Pui=j∈Nus(i,j)ruj] (1)
式中:[N(i)]表示喜欢视频[i]的用户集合;[N(j)]表示喜欢视频[j]的用户集合;[s(i,j)]的定义如式(2)所示。其中分母惩罚了热门物品的相似度,热门物品被大多数用户知晓,应该避免推荐。
[s(i,j)=N(i)?N(j)N(i)N(j)] (2)
令视频的关联矩阵为[C,]式(3)表示用户[u]的兴趣向量[P,]其中从上到下依次表示用户[u]对视频的兴趣度。
[P=C×V′u] (3)
去掉用户已评价过的视频,得到待推荐视频集合,集合中的元素是视频ID和对应的预测兴趣度。取预测兴趣度最高的前[k]项,生成推荐列表[R,]如式(4)所示:
[R=(v1,s1),(v2,s2),…,(vk,sk)] (4)
由于不同用户的评分高低的习惯不同,[a]和[b]应由用户的历史评分的平均分决定。
用户每产生一次点击操作或收藏操作,就对用户评分向量进行相应的修改,如果用户对同一个视频有数个操作,则取模拟评价分数的最高值。当用户事件数量累计达到预先设定的阈值,系统使用以上算法为用户产生实时推荐列表。
2.4 推荐系统测评
(1) 实验方法
离线实验首先通过系统工具获得用户行为数据,并按照一定的格式生成数据集。然后将数据集按照一定的比例分为训练集和测试集,将训练集算法注入到推荐系统中训练用户兴趣模型,在测试集上进行预测。最后通过离线实验指标评测在测试集上生成的预测结果与实际结果。
(2) 评测指标
衡量推荐质量的指标有很多,根据不同的实验方式,使用不同的指标进行评估。离线实验一般使用评分预测准确度(RMSE)、覆盖率、多样性等指标评价推荐系统。用户调查和在线实验可以获得用户满意度、惊喜度等离线实验无法获得的指标。
3 系统详细设计与实现
3.1 移动客户端设计与实现
移动客户端的架构图如图3所示。要实现移动客户端的用户功能模块,需要使用一些中间件作为基础,包括网络连接模块、网络检测模块和图片缓存模块。
(1) 网络连接模块
首先通过Volley工具创建RequestQueue对象,RequestQueue是使用Volley框架的核心,通过将创建的请求添加到RequestQueue中,该对象就可以按照先进先出的方式按顺序分发请求。在分发请求时,首先判断该请求是否被缓存过,如果已经缓存在本地,则使用CacheDispatcher调用缓存的内容返回给客户端。如果没有缓存,则调用NetworkDispatcher向网络发送请求,Dispatcher返回后,通过调用相应的onResponse接口,处理返回后的数据。
(2) 网络检测模块
网络检测模块还负责检测网络状态是连接还是断开。当网络断开时,给用户发送提示。在Android系统中,使用ConnectivityManager类对网络进行检测。网络检测用到的主要方法如表1所示。
(3) 图片缓存模块
LRU(Least Recently Used)缓存把最近最少使用的数据移除,将系统内存让给最新读取的数据。要想实现LRU存储策略,可以使用哈希表和双链表实现。将Cache的所有位置都用双向链表连接起来。当一个Cache被访问之后,通过相应的链表操作,将该Cache调整到链表表头的位置。新加入的Cache直接插入到链表表头。在进行多次调整操作后,最近被命中的Cache就会向链表头方向移动,而没有命中的则向链表尾部移动。因此,链表尾表示的是最近最少使用的Cache。当空间不足需要清除一部分内容时,链表最后的节点就是最少被使用的数据,根据需要将最后面的几个数据清除。
3.2 后台管理子系统详细设计与实现
(1) 视频管理模块
管理员对视频首页进行管理,可以增加和删除视频,这些视频将显示在移动客户端的视频界面。
(2) 用户管理模块
管理员删除用户评论的流程图如图4所示。首先查询被举报的评论是否存在,如果存在则删除,否则终止操作。
(3) 数据更新模块
管理员也可以对已有的运动和食物数据进行修改。图5所示为管理员更新运动数据的流程图。
3.3 实时推荐系统详细设计与实现
(1) Storm分布式流处理框架
在Storm集群中,有主节点和工作节点。主节点上运行着Nimbus进程,工作节点上运行着Supervisor进程。主节点上的Nimbus后台程序负责资源分配和任务调度,它会尽量均匀地将任务分配给Supervisor。Supervisor负责接收Nimbus分配的任务,启动和停止属于自己管理的进程。Nimbus和Supervisor的通信通过Zookeeper集群完成。
(2) 事件生成模块
一个事件纪录了时间戳、Sessionid、事件类型、用户ID和视频ID。事件流的类型分为三类,分别为点击事件、推荐事件和会话终止事件,分别代表用户的点击操作、推荐请求和会话结束状态。
(3) 实时视频推荐模块
要实现实时视频推荐,首先要计算离线推荐结果,编写MapReduce批处理任务。离线结果和它的中间结果是实时推荐的基础。得到了离线推荐结果和它的中间结果后,将这些数据存储到Redis中。运行在Storm集群上的topology接收用户的点击事件流,根据用户的点击时间和离线推荐的计算结果生成实时推荐列表。
(4) 推荐系统实验
本文的实时推荐系统实验数据基于Youtube上的用户评价健身视频数据的仿真数据。在Youtube上搜索关键词,取最热门的[N]个视频链接作为起点使用爬虫工具抓取用户对视频的评价信息。将这些数据整理,得到8千个用户对2千个视频的行为。进而可以得到用户对视频的评价矩阵和视频的相似度矩阵。将评论了视频但是没有把视频标记为喜欢的用户作为用户的点击数据。选择某一个时间点的点击数据作为实时数据。
4 系统测试
对系统的功能测试主要涉及健身管理模块、视频模块和账户管理模块的主要功能。通过测试得出,结果均通过。本系统使用Monkey对Android系统进行压力测试,使用命令adb shell monkey?p com.bit.fitlab?v 10对com.fitlab.manage包发送一定数量的随机事件流,模拟用户随机操作,然后返回这些操作对系统的影响。该测试结果说明,模拟了100次操作,系统没有产生崩溃,WiFi传输数据的耗时为520 ms。
5 结 论
本文实现了一款基于实时视频推荐系统的Android平台健身管理类应用软件,将健身视频资源和健身管理应用整合,便于用户提高健身效率。提出了实时视频推荐与健身管理结合的研究方向,系统的健身管理功能实现了对运动的时间、持续的时间、消耗的能量、项目完成的进度、摄取食物的质量和能量的全面管理功能,设计并实现了视频实时推荐系统,解决了新用户推荐的冷启动问题,并且增强了系统的实时性,使用户的兴趣点被实时捕捉。使用Storm分布式流处理框架实现,系统的性能卓越。
参考文献
[1] MILICEVIC A K, NANOPOULOS A, IVANOVIC M. Social tagging in recommender systems: a survey of the state?of?the?art and possible extensions [J]. Artificial intelligence review, 2010, 33(3): 187?209.
[2] 周海平,黄凑英.两种协同过滤推荐算法的比较研究[J].贵阳学院学报(自然科学版),2015,10(1):1?4.
[3] SNEHA S, JAYALAKSHMI D S, SHRUTHI J, et al. Recommending music by combining content?based and collaborative filtering with user preferences [C]// Proceedings of 2012 International Conference on ICERECT. India: Springer, 2012: 507?515.
[4] CUGOLA G, MARGARA A. Processing flows of information: from data stream to complex event processing [J]. ACM compu?ting surveys, 2012, 44(3): 359?360.
[5] CANTADOR I, BELLOG?N R, VALLET D. Content?based re?commendation in social tagging systems [C]// Proceedings of 2010 ACM Conference on Recommender Systems. New York: ACM, 2010: 237?240.
[6] XIA M J, ZHANG J G. Research on personalized recommendation system for e?commerce based on Web log mining and user browsing behaviors [C]// Proceedings of 2010 International Conference on Computer Application & System Modeling. Zhengzhou, China: IEEE, 2010: 408?411.
[7] 刘建国,周涛,郭强,等.个性化推荐系统评价方法综述[J].复杂系统与复杂性科学,2009,6(3):1?10.
[8] 孟远.Android网络通信框架Volley的解析和比较[J].软件,2014,35(12):66?68.