目录
一、推荐系统的意义
一句话概括就是在信息过载的情况下,建立人与信息的高效链接。
二、推荐系统的运行机制(粗略)
(一)两个角色
1、用户User:推荐系统的服务对象。
2、物料Item:推荐系统要推荐的信息。比如内容推荐中,推荐视频、歌曲等;电商推荐中,推荐商品等。
(二)若干步骤
- 给物料标签。
- 将物料根据标签建立索引(比如倒排索引),不同标签键的值为相应标签下的物料。
- 推荐系统接收用户的推荐请求,根据用户的兴趣爱好在物料库中检索相应物料,这个过程叫做召回Retrieval。
- 推荐系统对用户可能感兴趣的物料进行排序,将次序最靠前的几个推荐给用户。
- 将用户对推荐物料的行为记录日志,反馈给推荐系统,丰富用户兴趣爱好信息和物料的质量信息。
三、推荐系统的架构
(一)功能架构
特点:功能架构中越靠前的面对的候选集越大,对速度要求越高,对精度要求稍松。

1、召回
- 主要目标:重点关注速度,要求快速地在百万级候选集中选出用户可能感兴趣的物料。
- 面对候选集规模:百万级。
- 采用模式:离线计算,在线缓存。①离线计算:针对百万级的候选集,采用离线批量计算的方式处理,将处理后的结果存储到数据库中,并建立好索引。②在线缓存:检索索引即可,时间开销较小。
- 缺点:由于离线计算情况下缺少与用户的对接,因此缺失用户信息和物料信息的交叉,影响精度。
- 多路召回:采用数量弥补质量的方式,使用多路召回弥补精度上的不足。每一路都是物料信息或用户信息中的某个侧面。比如一路返回时下最热点的内容,一路返回用户喜爱的标签等等。
2、粗排
- 主要目标:精度和速度折中,处于召回和精排之间。
- 面对候选集规模:万级。
- 主流粗排采用模式:离线计算,在线缓存。
3、精排
- 主要目标:提升精度。
- 面对候选集规模:千级。
- 重点:用户信息和物料信息进行充分的交叉。
4、重排
- 主要目标:由于精排过后相似内容获得相似的得分,结果集中排列在相近的位置,容易导致用户的视觉疲劳,因此需要打散开来,使得一屏之内的推荐内容丰富多样。
- 较小推荐系统的重排方法:采用几条启发性规则。
(二)数据架构
1、数据类型
- 冷数据cold data:长期的、稳定的、可能过时的数据。
- 热数据hot data:当下的、近期的、最新的数据。
2、采用架构
Lambda架构。
3、Lambda技术精髓
- 处理方法:将数据请求分成冷数据请求和热数据请求。
- 冷数据请求:离线层批量计算处理数据,近线层缓存并提供快速检索。
- 热数据请求:在线层流式处理数据。
- 综合处理:汇总冷数据和热数据两个子请求的结果,得到最终的结果。

4、架构组成
①离线层
- 主要任务:批量计算处理数据。
- 采用技术:Hadoop、Spark、Flink,多任务协同可用Airflow完成。
②近线层
- 主要任务:存储离线层批量计算后的数据,也可处理和存储接近实时的数据,介于离线和在线之间。
- 采用技术:kv数据库(key-value),比如Cassandra和Redis。
③在线层
- 主要任务:对接用户行为数据流,不等数据落地,直接进行分析处理。
- 采用技术:Storm和Flink流式处理,Redis等支持随机读写的数据库进行存储。
四、推广搜的相同点和差异点
(一)推广搜的相同点
1、功能架构:都采用召回后排序。
2、数据架构:都采用Lambda。
3、主要目标:提供用户需要的信息。
(二)推荐和搜索的差异
1、意图表达不同:搜索意图表达使用查询语句。
2、准确性不同:搜索对准确性要求更严。
3、依赖的最重要的特征不同:搜索依赖查询语句与物料信息的交叉,推荐依赖用户信息和物料信息的交叉。
(三)推搜和广告的差异
1、准确性要求不同:推搜要求相对准确,广告要求绝对准确性。
2、即时性不同:推搜目标完成的即时性较强,比如点击率等。广告的转化链条越长,延迟反馈问题越严重。
3、目标不同:推搜要求留住用户、产生流量,广告要求流量的变现。