推特的个性化推送算法

标签: 推特 个性 推送 | 发表时间:2017-07-03 15:50 | 作者:
出处:http://www.infoq.com

来自推特的软件工程师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

相关 [推特 个性 推送] 推荐:

推特的个性化推送算法

- -
来自推特的软件工程师Gary Lam在2017 London QCon上谈论了个性化推送功能. 他总体概览了推特的个性化及推荐算法,并解释了这些算法是如何在推特的大数据量及二元特征下进行大规模运行的. 个性化分列(personalized fanout)是指只将推送发给感兴趣的用户. Lam给出的例子是埃隆马斯克所发表的关于电动汽车的推文.

内容推送器

- - It Talks--上海魏武挥的博客
最近有一本名为《认知盈余》的书很火,国内有一个网站狠狠地推了它一把(下文我会提及这个网站). 几年前我看过作者舍基的《未来是湿的》,相较之下,《认知盈余》差了很多,基本上是在炒《未来是湿的》的冷饭——虽然从书名上,认知盈余更显得学理性点、冠冕堂皇点. 《未来是湿的》这本书有很多论断是相当精辟的,它基本上描绘了人们在无名无利的前提下却依然在拼命制造信息的逻辑,而且还造得不错(比如维基百科).

ios消息推送 - Gen_0

- - 博客园_首页
      iOS的消息推送(推送通知)有两种,一种是本地推送通知,另一种是远程推送通知. 所谓本地推送通知就是使用代码推送消到用户设备中提醒用户一些信息,推送形式请查看手机设置. 远程推送通知是通过服务器发送消息到用户设备中,iOS到消息推送要经过苹果的服务器来推送消息,过程比较麻烦. 下面是个人学习笔记,只提供新手学习(当然我也是个新手),不能用于商业用途.

Android 4.0.3 源代码已推送到 AOSP

- - 谷安——谷奥Android专题站
16日 Google 宣布了 Android 4.0.3,该版本的源码目前已经推送到 AOSP 上,这是目前最新版本的 Ice Cream Sandwich. 这是首次推送了 4 个不同的版本,包括 Motorola XOOM、 Nexus S 和两个 Galaxy Nexus 版本.

推送服务的使用规则

- - 移动开发 - ITeye博客
   随着APP的普及,推送服务正快速地渗入到各个应用中去,但现在的推送市场还没有严格的管理,鱼目混杂的环境让用户又爱又恨. 前不久Google商店为了用户安全和体验更新了开发者政策,严格的控制让人想到了推送服务的使用,保持推送服务器稳定的开发难度很大,一般都是使用稳定的第三方推送方案,那么该遵循什么样的选择及使用规则呢.

activeMQ 推送之mqtt客户端

- - ITeye博客
使用activeMQ进行android推送. activeMQ下载地址:http://activemq.apache.org/download.html. 下载后是一个压缩包:apache-activemq-5.9.0-bin.zip. 解压缩,进入apache-activemq-5.9.0-bin\apache-activemq-5.9.0\bin,双击activemq.bat,即可启动activeMQ服务.

android平台消息推送机制

- - ITeye博客
方案1、使用GCM服务(Google Cloud Messaging). 简介:Google推出的云消息服务,即第二代的G2DM. 优点:Google提供的服务、原生、简单,无需实现和部署服务端. 缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google.

Android推送方案分析(MQTT/XMPP/GCM)

- - 移动开发 - ITeye博客
本文主旨在于,对目前Android平台上最主流的几种消息推送方案进行分析和对比,比较客观地反映出这些推送方案的优缺点,帮助大家选择最合适的实施方案. 方案1、使用GCM服务(Google Cloud Messaging). 简介:Google推出的云消息服务,即第二代的C2DM. 优点:Google提供的服务、原生、简单,无需实现和部署服务端.

APP的推送是咋回事

- - 幻风阁|kent.zhu'sBlog
本文转载自「给产品经理讲技术」公号,已经过原作者授权转载. 相信大家对推送这项技术并不陌生. 如果没听说过,那么作为一个充满好奇心的孩子,你一定想过这个问题:睡觉前我明明关闭了淘宝、网易新闻等app,为什么第二天他们又自动出现在我手机的通知栏上呢. 这其实就是推送系统干的好事:在你睡觉的时候,服务器悄悄的向你的手机推送了一个消息,然后唤醒了你已经关闭的app.

[原]推送 从入门到放弃

- - eclipse_xu
推送简直就是一种轻量级的骚扰方式. 自从有了推送,各个公司基本上都在使用推送,这确实是一个比较好的提醒方式,Android较iOS强的一个部分,也就是在于Android的Notification. Google教育我们利用好Android的通知模块,做更多友好的交互,可这句话,翻译成中文,不知不觉,就变成了在Notification中推送各种广告,而且仅仅就是一些广告,Notification各种牛逼的功能,完全不需要,这也违背了Google设计Notification的初衷.