本文主要分享个人经历中关于推荐系统的应用理解,包括整体推荐系统架构设计、推荐后台服务设计。
推荐系统根据数据使用划分为在线和离线两部分。APP服务日志通过flume采集,然后传给离线和在线业务使用。离线数据主要用来离线训练模型,如gbdt、lr、xgboost等,在线数据特征用来让模型进行在线预测。如下图所示:
在线部分实时数据从kafka获取到后直接进入spark streaming(这里也可以用其他实时计算技术,如storm,flink)进行处理,计算出实时特征存入redis,供线上模型预测服务使用。
离线部分离线部分数据主要分为两部分,一部分是mysql定时拉取过去,另一部分是从flume实时拉数据到hive数据仓库。mysql主要存储用户相关变动频率小的属性特征,flume采集计算的主要是帖子(feed)相关变化频率大的特征。
推荐主要方法分为召回和排序过程,召回过程是粗步选取数据,排序过程是对筛选后的数据精确排序,结果返回给用户。
备注: 上面的帖子取的条数都是根据实际经验选择,具体可以调整。
(完)
关注公众号我们可以更方便沟通交流:水木之椿