论文部分内容阅读
基于物品的协同过滤推荐算法虽然被广泛应用于电子商务、广告、新闻、音乐、视频等多种场合,但是仍然伴随着预测准确度不理想、冷启动等问题。同时,随着技术进步和人与设备之间交互性的增加,用户生成的数据更具动态,导致大量信息仅在短时间内有价值,需要对其进行及时处理,传统的推荐系统是在定期的时间间隔分析数据和更新模型,无法满足用户对实时性的要求。针对以上问题,本文提出了以下解决方案:(1)针对基于物品的协同过滤推荐算法存在的物品冷启动以及评分数据稀疏情景下预测准确度不高的问题,本文引入了类型相似度。在计算物品相似度时将物品类型相似度与协同过滤相似度进行组合,以此来减少数据稀疏对相似度计算的负面影响。(2)针对传统基于物品的协同过滤算法实时性差的问题,提出了一种基于物品的实时推荐算法,算法包括两个过程:相似度计算与推荐优先级计算,相似度计算使用离线计算方式,优先级使用在线计算方式,同时为了体现用户兴趣的动态变化,在推荐优先级计算中加入了时间因子。(3)针对传统推荐系统存在着计算缓慢、无法根据用户实时行为作出推荐的问题。本文设计并实现了一个基于流计算的实时推荐系统,系统采用Flume收集日志,Kafka进行消息缓冲,Spark Streaming进行实时流处理,Redis与Mongo DB进行数据存储。将离线处理与在线处理相结合,离线处理部分完成复杂度高、运算量大的计算,在线处理部分完成轻量级的一些计算,使得推荐系统能够实时响应用户行为。本文通过实验对设计出的实时推荐系统进行了准确性和性能测试,实验证明基于Spark Streaming的实时推荐系统具有良好的性能。