推荐系统

1 项目概述及目标

1.1 项目背景

练习使用

1.2 目标

打造个简单的 feed 流

2 需求分析

2.1 功能需求

2.1.1 场景

  • 活动流,例如在 Github 上看到的

  • Twitter 风格的新闻提要 / Facebook 风格的新闻源

  • 通知系统

2.2 调研

2.2.1 推荐系统流程

传统划分: 召回 + 排序

(1) 召回:根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品。
特点:速度快。

(2) 排序:可以融入较多特征,使用复杂模型,来精准地做个性化推荐。
特点:结果精准。

精细划分: 召回->粗排->精排(Ranking)->重排(ReRank)

(1) 召回(多路召回)
根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品。

(2) 粗排(可用可不用,根据场景选择)
通过少量用户和物品特征,简单模型,对召回的结果进行个粗略的排序,保证一定精准的前提下,进一步减少选取的物品数量。
作用:防止用户召回环节返回的物品数量还是太多,导致排序环节速度跟不上,所以在召回和精排之间加入一个粗排。

(3) 精排(重要)
可以使用任何特征和复杂模型,尽量精准地对物品进行个性化排序。

(4) 重排
改进用户体验,可以采用各种技术及业务策略(技术产品策略主导),比如:去已读、去重、打散、多样性保证、固定类型物品插入等等。

3 总体设计

采用推模式

角色

我们看看角色和每个角色需要的功能:

发送者
    发送状态:add_activity()

接收者
    关注:follow()
    读取Feed流:get_activity()
                                 send
                                  |
                                  | add_activity()
                                  |
                                  V
                              +-------+
                              | queue |
                              +-------+
                             /    |    ^    
                           /      |      \
                         / 2      |3       \ 1
                       /          |          \
                     V            V            \
    +-------------------------------------------------------+
    | +---------------+   +--------------+   +------------+ |
    | |               |   | +-----+-----+|   |            | |
    | |     self      |   | |other|other||   |  relation  | |
    | |               |   | +-----+-----+|   |            | |
    | +-------+-------+   +-------+------+   +------------+ |
    +---------+-------------------+-----------------^-------+
              |                   |                 |
              |                   |                 |
              | get_activity      | get_activity    | follow
              |                   |                 |
              |                   |                 |
              V                   V                 |

4 详细设计

5 传送门

Last updated