论文部分内容阅读
近年来,Internet以及移动互联网技术的快速发展,使我们进入到了一个信息爆炸的时代。人们每天都在接受着来自社交网站、网络媒体的成百上千的碎片化信息。技术的发展提高了人们接受信息的频率和速度,但同时,也使得用户在逐渐过载的信息量中很难找到自己感兴趣的内容。推荐系统,从本质上来说是通过用户的行为和特征,在相似的用户及相似的数据之间建立对应关系,从而预测用户的兴趣。本文旨在基于SNS (Social Network Service)网络的背景下,设计并实现一个优化的文本推荐系统,以解决传统的推荐系统中的不足。本文首先分析了目前常见的推荐算法的应用以及成功案例,并分析了这些推荐算法存在的优劣。传统的推荐算法通常都会面临冷启动和数据稀疏性的问题。为了解决这两个问题,本文结合本系统需求的实际特点对所使用的推荐算法的整体结构进行了设计,通过引入LDA (Latent Dirichlet Allocation)算法,一定程度上消除了频繁更新的文本内容带来的冷启动问题。通过引入分阶段的训练过程,降低了系统在运行时的计算复杂度,提高了系统的实时性。其次,本文对该推荐系统进行了需求分析,结合性能和扩展性的指标,完成了系统的架构设计,并在此基础上设计并实现了完整的基于LDA算法的推荐系统。系统包括任务系统、存储系统以及Restful API三个主要组成部分。其中,任务系统是本系统的核心服务,其中包括了离线训练任务、离线推荐任务以及准实时推荐任务三个主要任务。存储系统实现了基于Hadoop HDFS的分布式存储结构,用以提供高可用性的数据存储服务并为基于Map/Reduce的分布式计算进行了优化。Restful API是系统的对外接口,处理用来所有的输入、输出数据。除此之外,本系统的整体架构设计中还包含了互联网架构中经常采用的基于Key/Value的存储服务器Redis,用以提高系统的吞吐量。最后,本文基于线上SNS产品的数据集对推荐系统的推荐效果进行了测试,并给出了测试的数据及结论,通过实验和数据验证推荐了算法的可用性。