BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

推特的个性化推送算法

| 作者 Andrew Morgan 关注 0 他的粉丝 ,译者 周元昊 关注 0 他的粉丝 发布于 2017年7月3日. 估计阅读时间: 4 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

来自推特的软件工程师Gary Lam在2017 London QCon上谈论了个性化推送功能。他总体概览了推特的个性化及推荐算法,并解释了这些算法是如何在推特的大数据量及二元特征下进行大规模运行的。

个性化分列(personalized fanout)是指只将推送发给感兴趣的用户。Lam给出的例子是埃隆马斯克所发表的关于电动汽车的推文。不是他所有的粉丝都收到了该推送通知,而只有那些对电动汽车感兴趣的粉丝才会收到。

Lam解释到,个性化分列算法是通过跟踪两个指标来实现的:

1.最近参与的对象:这是指用户对特定对象,如话题或用户,进行的点赞、回复及其他用户交互操作。Lam强调这些数据需要保证实时性,因为用户往往只会对他们最近互动过的内容感兴趣。

2.首要关注:虽然一个用户可能关注数百名其他用户,但其中只有某几个是其首要关注的,这些用户发送的内容才是其最感兴趣的。

当使用这个算法时,首先要做的是从推文中提炼出各个对象。然后,对每位关注者,查看最近是否有与该对象产生过互动,再检查该推文是否来自于其首要关注的对象。如果同时满足这两个条件,该用户就会收到这条通知,因为从中可以推测该用户对这条推文感兴趣。

Lam解释到,该个性化分列算法的主要问题是其不对称性。如果一个用户被数以百万用户所关注,那么每当他们发布一条推文,这个算法就必须对每个关注者进行计算。而另一方面,有的用户却可能只有几位关注者。

Lam解释了他们是如何利用数据协同定位来解决这个问题的。用户群首先被进行了分片处理,他们最近的互动以及首要关注会被和分片保存在一起。这就意味着在算法运行时,不会有网络访问发生,这大大减少了延迟。

Lam指出,鉴于最近互动的数据本身是有时效性的,计算出的数据并不需要保存很久,所以可以将它们保存在内存中。

在数据分片时,数据的重建被尽早地大幅优化,以确保用户可以收到他们的通知。这是通过在队列中重放前一天所有的推文来进行的,然后将消息打包并删除冗余数据,再将它们传入到分片中。这个过程被称为“涓涓细流(slim firehose)”。

同时通过用户之间的历史交互,利用离线机器学习算法计算出首要的关注目标。由于这些是预先计算好的,它们可以在启动时被复制到分片所在的硬盘上,并在需要的时候进行延迟加载。

Lam也谈到了推荐算法。这与个性化分列算法略有不同。在这种情况下,用户不需要是数据来源的关注者,只要他们对内容存在潜在的兴趣。

在这种情况下,每个用户都会被循环到,而不只是事件数据中的部分用户。Lam解释说,这样可以更方便地利用资源,因为可以方便地预测用户的数量,从而执行加载操作。此过程会触发以下几个步骤:

1.过滤:如果用户对该通知不感兴趣或没有与通知进行过交互,就不会再向该用户进行推送。 
2.候选来源:潜在用户账号被传送以便进行通知。其中使用到两个技术,GraphJet,推特的实时图处理库,和Scalding,推特的离线map-reduce算法。 
3.排名:利用机器学习来为用户挑选最佳通知。 
4.推送:将通知推送到用户的设备上。

演讲的详细资料可以在线获得。其中还包含了Saurabh Pathak关于实时发送通知的演讲,这在另一篇文章中做了总结。

查看英文原文Personalized Notifications at Twitter

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT