推荐:
电影推荐系统
使用git进行代码版本管理,使用markdown编写文档,
技术站
前端:angular
后端:Spring,ES,MongoDB,Redis,
数据端:Flume -> Kafka -> Spark Streaming -> MongoDB
1、使用Flume收集用户日志,例如评分行为、点击行为、浏览行为。
2、Kafka实时读取Flume收集的日志信息。
3、Spark Streaming消费kafka队列的数据。
4、使用ALS算法对评分矩阵做矩阵分解,根据电影的隐语义特征计算电影之间的相似度,并将相似度做倒排索引,例如{‘movieid1’:[(‘movieid2’,‘0.99’), …]},并将倒排数据持久化到MongoDB。
5、利用电影的标签数据,使用TF/IDF来计算电影之间的相似度,同样使用倒排的思路持久化道MongoDB。
6、实时推荐:利用电影的相似度倒排,根据用户最新的电影评分或者点击行为来做推荐,使用Spark Streaming来实时计算推荐优先级,然后存储到Redis中,提高用户的访问体验。
7、使用spark计算每个门类的平均评分最高的电影来解决冷启动问题。
8、使用spark将日志数据做分析和处理,然后持久化道MongoDB、ES等数据库中,实现data loader功能。
9、使用了业界广泛使用的movielens数据集,并了解过lastfm、netflix等著名的数据集。
10、将推荐系统引擎模块化:als矩阵分解的相似度计算、基于tfidf的相似度计算、实时推荐模块,每一个引擎都会产生一个推荐列表,对不同的引擎赋予不同的权重,然后合并列表,产生推荐数据。
11、通过A/B测试来评估推荐结果
12、优化spark的计算效率,比如将一些数据进行.cache()操作缓存,对某些数据做broadcast广播到其他节点,加快运算。
13、使用git进行版本管理,远程代码仓库使用自己搭建的gitlab
前端埋点 -> 阿里云oss -> shell/python脚本下载日志数据 -> 转换成hdfs -> spark离线计算
logging.info()
解决业务场景中出现的数据倾斜问题