论文部分内容阅读
21世纪社会文娱产业得到了快速的发展,而视频作为一种生动形象的信息载体更是受到了人们的青睐。快速增长的视频业务带来的爆炸式视频数据规模扩张使得用户在浏览视频时显得无所适从,并且随着用户的急剧增长,企业想在短时间内让用户找到兴趣相符的视频也愈发的艰难。而推荐技术的出现正是为了解决信息过载的问题,但传统的推荐系统存在一些不足之处:首先,传统推荐系统大多是在单机上部署或基于Hadoop架构的MapReduce部署,当数据量较大时单机部署的系统无法实现较大的吞吐量,而基于Hadoop的MapReduce的部署是基于持久存储的计算,该模式对有迭代需求的推荐算法运算时由于频繁的存取磁盘无法保证有效的运算效率。其次,传统的推荐系统虽然能够给用户进行个性化的推荐,但没有考虑到用户兴趣会随时波动的情况,因此未对用户实时反馈信息进行推荐模型的增量更新。再者,传统系统的推荐列表通常是由独立的算法计算而来,未充分考虑各类推荐算法的短板。为解决上述问题,本文主要针对视频个性化推荐的实时推荐特点,借鉴Lambda架构思想,构建一套基于Spark平台的通用的离线、近线和在线的推荐系统。基于上述系统实现了基于内容特征相似推荐模型、基于视频评分数据的协同推荐模型,并提出相应的增量模型来提供实时推荐功能。为了兼顾用户长短期偏好提高实时推荐的准确性,本文提出了基于用户偏好整合的推荐算法。最后本文给出对各种推荐算法推荐结果的融合策略弥补了各自推荐算法的短板。主要工作内容有:首先,本文研究了并行计算框架Spark的计算原理和实时流数据处理组件Spark Streaming的处理机制,分析了数据采集框架Flume和Kafka各自擅长的场景和业务流程,结合支持海量数据的分布式存储,随机查询速度较快的HBase。在此基础上构建一套基于Spark平台的通用推荐计算模型,使得各种支持增量的推荐算法都能独立运行在该模型上。其次,本文研究传统的内容推荐和协同推荐算法实现流程,使用TF-IDF技术从视频的描述信息和标签数据中抽取出视频特征向量,依据这些向量计算内容之间的相似度给出基于内容推荐的推荐列表。本文通过对用户评分矩阵数据进行ALS(交替最小二乘法)矩阵分解得到用户和内容的特征矩阵,并通过评分预测给出协同推荐列表,此外本文还给出了上述基于内容推荐和基于用户协同推荐的实时更新模型。再次,本文提出了一种基于用户偏好整合的推荐算法,该算法对用户的历史反馈数据进行长、短期分类,单独计算其长、短期的历史偏好,对用户的实时数据进行在线处理得出其实时偏好,最后引入时间因子衰减来整合历史和实时偏好得出用户的最终偏好向量。此外,本文仔细研究上述算法优缺点,结合系统不同的推荐场景本文通过对上述多种算法结果按照不同权重的进行融合来弥补各类推荐算法的缺点。最后,通过部署Hadoop、Spark等分布式软件,借助Movielens数据集实现了相关的理论和研究工作,设计并开发一套实时推荐系统,并在此平台上给出上述算法的实现,实验结果表明本套系统能满足视频实时推荐的时效性需求并且有效提高了推荐系统的准确率。