本文详细介绍了在Twitter推荐系统中生成用户主页时间线(也称为“为你推荐”信息流)的端到端流程。它解释了推文如何从各种候选源获取,经过排序、过滤,最终组装成呈现给用户的时间线。有关具体的非关注内容推荐信息,请参阅内容推荐;有关底层机器学习基础设施的详细信息,请参阅ML服务基础设施。
主页时间线生成过程遵循以下主要步骤:
来源:README.md29-49 home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator/RequestQueryFeatureHydrator.scala1-121
主页时间线生成系统从多个候选来源获取推文:
| 候选来源 | 描述 | 贡献 |
|---|---|---|
| 搜索索引 | 查找并排名用户关注账户的推文 | 约占时间线内容的50% |
| CR-Mixer | 用于获取非关注推文候选的协调层 | 提供来自用户关注网络之外的推荐 |
| 用户-推文-实体图 (UTEG) | 维护一个内存中的用户与推文交互图 | 基于图遍历查找候选推文 |
| 关注推荐服务 (FRS) | 提供账户推荐 | 推荐关注的账户以及这些账户发布的推文 |
特征补充是时间线生成过程中的关键步骤。它涉及收集和计算有关推文、用户和请求上下文的各种特征,这些特征将用于排名和过滤决策。
RequestQueryFeatureHydrator 收集有关请求上下文的基本信息,包括:
这些特征用于个性化时间线内容,并确定要应用的算法和过滤器。
来源:home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/feature_hydrator/RequestQueryFeatureHydrator.scala32-121 home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala39-307
主页时间线生成系统依赖丰富的特征集来进行有效的内容选择和排名决策。HomeFeatures 类定义了核心特征集,可分类如下:
| 功能类别 | 描述 | 示例 |
|---|---|---|
| 候选特征 | 单条推文的属性 | 作者ID、内容类型、指标、社交上下文 |
| 查询特征 | 用户请求的属性 | 设备信息、请求类型、用户设置 |
| 结果特征 | 已组装时间线的属性 | 大小、构成、展示上下文 |
这些特征在整个管道中用于候选选择、评分、过滤以及时间线的最终组装。
来源:home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeFeatures.scala39-325
主页时间线生成过程采用两阶段排名方法:
主页时间线生成的最后阶段涉及组装时间线并应用可见性过滤器:
主页时间线生成过程与Twitter推荐架构中的其他几个组件集成:
来源:README.md5-21 home-mixer/server/src/main/scala/com/twitter/home_mixer/param/HomeMixerInjectionNames.scala1-46
主页时间线生成系统是一个复杂的多阶段管道,它结合了各种候选来源,应用了复杂的排名算法,并实施了过滤规则,为每个用户创建个性化时间线。通过利用机器学习模型和实时用户信号,它旨在从关注和非关注来源中呈现最相关和最吸引人的内容。