23张图,带你入门推荐系统 http://www.woshipm.com/pd/4223123.html

https://cloud.tencent.com/developer/article/1617082

推荐系统主要解决的是信息过载问题,目标是从海量物品筛选出不同用户各自喜欢的物品,从而为每个用户提供个性化的推荐。推荐系统往往架设在大规模的业务系统之上,不仅面临着用户的不断增长,物品的不断变化,而且有着全面的推荐评价指标和严格的性能要求(Netflix 的请求时间在 250 ms 以内,今日头条的请求时间在 200ms 以内),所以推荐系统很难一次性地快速计算出用户所喜好的物品,再者需要同时满足准确度、多样性等评价指标。

为了解决如上这些问题,推荐系统通常被设计为三个阶段:召回、排序和调整,如下图所示:

这里以文章推荐系统为例,讲述一下推荐系统的完整流程,如下图所示:

  1. 同步业务数据 为了避免推荐系统的数据读写、计算等对应用产生影响,我们首先要将业务数据从应用数据库 MySQL 同步到推荐系统数据库 Hive 中,这里利用 Sqoop 先将 MySQL 中的业务数据同步到推荐系统的 HDFS 中,再关联到指定的 Hive 表中,这样就可以在推荐系统数据库 Hive 中使用用户数据和文章数据了,并且不会对应用产生任何影响。

  2. 收集用户行为数据 除了用户数据和文章数据,我们还需要得到用户对文章的行为数据,比如曝光、点击、阅读、点赞、收藏、分享、评论等。我们的用户行为数据是记录在应用服务器的日志文件中的,所以可以利用 Flume 对应用服务器的日志文件进行监听,一方面将收集到的用户行为数据同步到 HDFS 中,并关联到 Hive 的用户行为表,每天更新一次,以供离线计算使用。另一方面将 Flume 收集到的用户行为数据同步到 Kafka,实时更新,以供在线计算使用。

  3. 构建离线画像和特征

  4. 多路召回

  5. 排序

    不同模型的做法大致相同,这里以 LR 模型为例。

  6. 推荐中心