推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8 年推荐系统工程师
43607 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
原理篇 · 深度学习 (2讲)
原理篇 · 其他应用算法 (3讲)
推荐系统三十六式
15
15
1.0x
00:00/00:00
登录|注册

24 | 典型的信息流架构是什么样的

总结
数据管道
信息流排序
动态发布
数据模型
整体框架
典型的信息流架构

该思维导图由 AI 生成,仅供参考

从今天起,我们不再单独介绍推荐算法的原理,而是开始进入一个新的模块——工程篇。
在工程实践的部分中,我首先介绍的内容是当今最热门的信息流架构。
信息流是推荐系统应用中的当红炸子鸡,它表现形式有很多:社交网络的动态信息流、新闻阅读的图文信息流、短视频信息流等等。
如果要搭建一个自己的信息流系统,它应该是怎么样的呢?今天,我就来带你一探信息流架构的究竟。

整体框架

信息流,通常也叫作 feed,这个英文词也很有意思,就是“喂”给用户的意思。
传统的信息流产品知识简单按照时间排序,而被推荐系统接管后的信息流逐渐成为主流,按照兴趣排序,也叫作“兴趣 feed”。
所以我们通常提到信息流,或者兴趣 feed,其实都是在说同一个话题。
这里温馨提示一下:如果要搜索 feed 相关的技术文章,你应该用“Activity Stream”作为关键词去搜,而不应该只用“feed”搜索,Activity Stream 之于 feed,就好比多潘立酮之于吗丁啉,前者是行话,后者是通俗说法。
要实现一个信息流,整体逻辑上是比较清楚的。可以划分为两个子问题。
如何实现一个按照时间顺序排序的信息流系统?
如何给信息流内容按照兴趣重排序?
我这里先给出一个整体的框架,然后再分别详谈。
这张架构图划分成几个大的模块:日志收集、内容发布、机器学习、信息流服务、监控。这里分别介绍一下:
日志收集,是所有排序训练的数据来源,要收集的最核心数据就是用户在信息流上产生的行为,用于机器学习更新排序模型;
内容发布,就是用推或者拉的模式把信息流的内容从源头发布到受众端;
机器学习,从收集的用户行为日志中训练模型,然后为每一个用户即将收到的信息流内容提供打分服务;
信息流服务,为信息流的展示前端提供 Rest API;
监控,这是系统的运维标配,保证系统的安全和稳定等。

数据模型

信息流的基本数据有三个:用户(User)、内容(Activity)和关系(Connection)。
用户不用说,就是区别不同用户的身份 ID,我来说一说其他的两种。

1. 内容即 Activity。

用于表达 Activity 的元素有相应的规范,叫作 Atom,你可以参考它并结合产品需求,定义出自己的信息流数据模型来。
根据 Atom 规范的定义,一条 Activity 包含的元素有:Time、Actor、Verb、Object、Target、Title、Summary。下面详细解释一下这些元素。
Time:即“Activity 发生的时间”。
Actor:即“Activity 由谁发出的”。通常 Actor 就是用户 ID,但是我们也可以扩展到其他拟人化物体上,如关注的一个“店铺”,收藏的一部“电影”,或者用户喜欢的一个标签或者分类。也就是和用户建立连接的另一端。
Verb:动词,就是连接的名字,比如“Follow”“Like”等,也可以是隐含的连接,如挖掘出的用户兴趣词和用户之间这种潜规则。
Object:即动作作用到最主要的对象,只能有一个,比如一个人赞过的一张照片,店铺上新的一件商品,一个分类下一篇新的文章。
Target:动作的最终目标,与 verb 有关,可以没有。它对应英语中介词 to 后接的事物,比如“John saved a movie to his wishlist”(John 保存了一部电影到清单里),这里电影就是 Object,而清单就是 Target。
Title:这个是 Activity 的标题,用自然语言描述,用于展示给用户。
Summary:通常是一小段 HTML 代码,是对这个 Activity 的描述,还可能包含类似缩略图这样的可视化元素,可以理解为 Activity 的视图,不是必须的。
举个例子: 2016 年 5 月 6 日 23:51:01(Time)@刑无刀(Actor) 分享了(Verb) 一条微博(Object) 给 @极客时间 (Target)。把前面这句话去掉括号后的内容就是它的 Title,Summary 暂略。
除了上面的字段外,还有一个隐藏的 ID,用于唯一标识一个 Activity。社交电商 Etsy 在介绍他们的信息流系统时,还创造性地给 Activity 增加了 Owner 属性,同一个 Activity 可以属于不同的用户,相当于考虑了方向。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了信息流架构的关键模块,从动态发布到信息流排序再到数据管道,全面介绍了信息流系统的设计和实现。首先,文章介绍了信息流的产生过程,包括“拉”模式和“推”模式,以及它们各自的优缺点。接着,文章详细讨论了信息流的排序方法,强调了机器学习在信息流排序中的重要性,并介绍了特征工程和模型训练的关键步骤。最后,文章提到了数据管道的重要性,以及离线训练和在线服务的区别。总的来说,本文通过详细的架构图和数据模型,为读者提供了一个清晰的信息流架构概览,使读者能够快速了解信息流系统的关键要素和实现方式。文章内容涵盖了信息流系统设计的方方面面,对于想要深入了解信息流架构的读者来说,是一份极具价值的技术指南。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《推荐系统三十六式》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 林彦
    大晚上的,偷偷懒不做产品经理去研究2家公司的实际信息流了。这2个应用我都没安装,平时很少用。根据网上的文章抛个砖头。 共同点: 1. Facebook和今日头条都是要通过内容提取,用户和环境的分析找到最匹配的信息; 2. 根据用户的各种行为来衡量效果; 3. 都会引入一些无法完全用数据衡量的目标。比如屏蔽广告,屏蔽骚扰帐号,屏蔽有害内容; 4. 特征提取,特征匹配,用各种机器学习和深度学习的模型。用户标签/画像,内容标签的建立。这些工作后面的机制是相通的; 5. 实时信息流的更新量大,对性能要求高; 6. 都会有实验平台和长期跟踪效果的记录平台; 7. 都有人工介入评估。 不同点: 1. Facebook里原创和转发的动作比今日头条更频繁(我的理解),这个动作的衡量会不同; 2. 今日头条的内容更复杂,种类更丰富,需要提取的特征种类,特征信息和衡量效果的因素更多; 3. 今日头条的内容是有层级逻辑关系的; 4. Facebook人之间的关系,互动的影响要比今日头条之间要大; 5. 今日头条内容团队的中国特色。评估效果时人工介入的更多。
    2018-04-27
    20
  • 自由如风
    相同点:都是个性化推荐,都要召回/排序,不断更新模型参数 不同点: 1.facebook拉少推多,今日头条拉多推少 2.facebook用户特征更多,今日头条内容特征更多
    2020-04-20
    3
  • 🐱您的好友William🐱
    我认为facebook的根本是社交,头条的根本是内容。所以对于算法和架构的搭建是围绕两个根本不一样的命题开展的,虽然会用到相似的手段去实现各自的目标。
    2018-10-11
    3
  • 微微一笑
    脸书生产的都是个性化的内容,基本不会重复!头条是个内容聚合平台,不同来源的数据很多重复
    2018-04-27
    2
  • jt120
    关键看生产者和消费者的关系,脸书是大家都会生产消费,头条是只少数人生产,消费多用推,生产多用拉
    2018-04-27
    2
  • 自由如风
    一定要先弄清楚为什么要对时间序重排?这里的时间序重排是不是有笔误?
    2020-04-20
  • 自由如风
    拉模式说的一行 SQL 语句就搞定了,sql语句可以给个实例吗?
    2020-04-20
    1
  • 晨晓
    召回层和排序层怎么协同工作的,这个应该讲一下
    2020-03-29
    1
  • fzhyang
    传统的信息流产品知识简单按照时间排序 这里是不是有笔误 知识应该是只是?
    2019-12-10
  • 宇天飞
    请问下,离线得到的模型数据什么时候更新,让实时服务可以使用呢
    2019-04-06
收起评论
大纲
固定大纲
整体框架
数据模型
1. 内容即 Activity。
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部