## 1.2 推荐系统设计

### 学习目标

- 了解推荐系统要素
- 记忆推荐系统架构

### 1 推荐系统要素

- UI 和 UE(前端界面)
- 数据 (Lambda架构)
- 业务知识
- 算法

### 2 推荐系统架构

- 推荐系统整体架构

  ![](img/%E6%8E%A8%E8%8D%90%E6%B5%81%E7%A8%8B.png)

- 大数据Lambda架构

  - Lambda架构是由实时大数据处理框架Storm的作者Nathan Marz提出的一个实时大数据处理框架。

  - Lambda架构的将离线计算和实时计算整合，设计出一个能满足实时大数据系统关键特性的架构，包括有：高容错、低延时和可扩展等。

  - 分层架构

    - 批处理层
      - 数据不可变, 可进行任何计算, 可水平扩展
      - 高延迟  几分钟~几小时(计算量和数据量不同)
      - 日志收集： Flume
      - 分布式存储： Hadoop
      - 分布式计算： Hadoop、Spark
      - 视图存储数据库
        - nosql(HBase/Cassandra)
        - Redis/memcache
        - MySQL
    - 实时处理层
      - 流式处理, 持续计算
      - 存储和分析某个窗口期内的数据（一段时间的热销排行，实时热搜等）
      - 实时数据收集 flume & kafka
      - 实时数据分析  spark streaming/storm/flink
    - 服务层
      - 支持随机读
      - 需要在非常短的时间内返回结果
      - 读取批处理层和实时处理层结果并对其归并

  - Lambda架构图

    ![](img/lambda3.png)

- 推荐算法架构

  - 召回阶段 (海选)
    - 召回决定了最终推荐结果的天花板
    - 常用算法:
      - 协同过滤
      - 基于内容
  - 排序阶段 （精选）
    - 召回决定了最终推荐结果的天花板, 排序逼近这个极限, 决定了最终的推荐效果
    - CTR预估 (点击率预估 使用LR算法)  估计用户是否会点击某个商品 需要用户的点击数据
  - 策略调整

![](img/recommend7.jpeg)

- 推荐系统的整体架构

  ![](img/rs%E5%9F%BA%E7%A1%80%E4%B8%9A%E5%8A%A1%E6%9E%B6%E6%9E%84.png)

  ![](img/rs%E5%9F%BA%E7%A1%80%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84.png)

