论文部分内容阅读
随着互联网与信息技术的迅速发展,人们越来越喜欢从网络上购买商品。电子商务的兴起确实从很大程度上满足了人们便捷购物的需求,然而当商品数量趋于海量时,消费者面对琳琅满目的商品却有一种无从下手的感觉,这就是信息量达到一定规模时出现的信息过载困扰。从电商网站的角度看,如何让广大消费者喜欢和购买自己的商品,尤其是让长尾商品展现在需要的消费者面前;从广大消费者的角度看,如何在商品数量越来越多的情况下,迅速找到自己需要的商品,而不被噪声信息所干扰,推荐系统就是用来解决这一矛盾的重要工具。通过对用户过往历史数据的挖掘分析,从性别、年龄、兴趣爱好等多个维度,构建出用户特征模型,当用户下一次在网站上产生行为时,就能根据特征模型为用户进行推荐。推荐系统大多都面临实时性和冷启动问题,原因是计算用户、物品相似度矩阵或者进行矩阵分解需要进行离线计算且比较耗时。推荐冷启动是因为新注册的用户或新加入的商品还没有产生过行为,由于缺乏历史数据无法计算出正确的特征模型,因此不能给出准确的推荐结果。解决推荐冷启动有三种可选方案,一是根据用户的注册信息进行用户年龄、性别和地域推荐;二是引导用户将自己的偏好表达出来,利用收集到的用户兴趣标签进行推荐;三是将最近一段时间的热门商品推荐给用户。还有一种是通过第三方平台,利用该用户在第三方平台的行为记录作为推荐依据。本文主要采用热门商品推荐和流式计算来解决推荐冷启动问题,通过灰度测试验证表明,该方案能够有效解决推荐冷启动和实时性问题。通过对现有推荐系统和流式处理技术的深入研究,本文提出了面向流式计算的实时推荐方案。通过建立多层次数据分析处理平台,有效地解决了历史数据计算耗时和新数据实时响应的矛盾。该方案基于Apache开源的Storm和Hadoop框架,结合了Redis和Elastic Search的技术特点,从架构层面实现了离线计算、近线计算和在线计算。对历史数据的分析和建模,主要在离线计算平台中完成,用户实时交互数据的计算主要集中在近线计算平台,对推荐结果融合业务规则和重排序通过在线计算平台实现,各计算平台之间数据传输和共享通过Kafka消息队列和Redis缓存实现。实时商品推荐系统从架构设计上严格遵守了软件系统高内聚、低耦合、可扩展的原则。论文结构上,首先对推荐系统相关技术进行了综述,分析和比较了国内外推荐技术的研究现状和行业发展;其次分析了推荐系统的现实需求和现有推荐系统面临的实时性、冷启动以及多样性等问题,在此基础上总结出具有实时快速响应用户行为的推荐系统架构;最后,阐述了实时商品推荐系统架构及其实现方法。