不了解今日头条是怎么运作的。不过因为在Facebook工作时负责新鲜事(Newsfeed)的个性化推荐与排序,我可以说说Facebook是怎么衡量自己推荐和排序的质量的。
在具体执行层面,主要有三个方式,分别是从
机器学习模型,
产品数据,和
用户调查上来考核推荐引擎的效果。
1. 机器学习模型 推荐引擎的一大核心就是机器学习(不过现在都说人工智能了,但本质上还是supervised learning)。如果是想考察机器学习模型的质量,学术上早就有一套成熟的实践方法。无论是模型的选择(比如从decision tree替换成neural network),还是迭代改进(比如模型训练时多用一倍的数据),都可以使用基于supervised learning的衡量办法。最常见的就是AUC。
另一方面,对于某一类特定问题也有更细致的指标。比如说,可以通过模型特征的重要性(feature importance)知道新加的特征是不是有用。
2. 产品数据 再牛逼的机器学习模型都要经历产品数据的实际检验。这方面大家就都比较熟悉了,KPI嘛。不过在Facebook特别是Newsfeed这种牵一发动全身的地方,我们会追踪
一系列数据来描述产品,而不是依赖某一个单一标准。这些数据包括但不限于:
- 日/月活跃用户(DAU,MAU)
- 用户互动 (点赞,评论,转发等)
- 用户发帖量
- 用户停留时间和消耗的内容量
- 收入
- 用户互动率(比如看过的内容中点赞/评论/长阅读/收藏的比例)
- 用户举报和屏蔽的数量
而且,在日常的快速迭代和A/B测试中,只有这些笼统的数据是不够的,我们还需要些更细致的数据来真正理解我们的一些改动。比如说:
- 内容类型的分布是怎么变动的:用户原创和转发的比重分布,网页链接和图片视频的比重分布,长视频和短视频的比重分布等等
- 对公众帐号是怎么影响的:什么样的公众号会受益于这次改动
- 哪些第三方巨头受到了影响,影响是否合理:比如我最早在FB实习时候的项目是整顿SPAM帐号,那个改动重创了Zynga(因为Zynga严重依赖用户骚扰他的好友来吸量),但大家觉得挺合理的,让公关去沟通了下就发布了。
另外,为了防止短暂的眼球效应,对每一个重要的产品决策,
我们都会维护一个长期的backtest,用来评估这个决策的长久影响。比如说:
- 对于在feed里面放广告这个决定,我们会选择一小部分用户,对他们长期不显示广告,然后将他们的用户活跃度同正常能看到广告的用户做对比,来衡量广告的长期影响。
- 类似的,对于Newsfeed是否排序,我们也有一个holdout group,他们的feed是完全按时间排的。
这样,对每一个可能会有争议的决策,但未来的每个时间点,我们都能清楚的知道,我们是面临着怎样的取舍。有了这层保障,在决策的当下,我们也就敢于冒险些,走得更快些。
3. 用户调查 大多数产品数据有其局限性,因为他们是
显性而被动的。比如说,你给用户推送了一个博眼球的低俗内容,用户在当下可能是会去点开看的,所以数据上是好的。但用户可能心里对这个内容的评价是低的,连带着对作为内容平台的产品也会看轻,长此以往对产品的伤害是巨大的。
KPI无法完全描述产品质量,在硅谷互联网圈是有共识的,但如何解决,每个公司答案都不同。Twitter系的CEO们,无论是Jack Dorsey还是Evan Williams,都倾向于轻视KPI而依赖自己主观想法来决策。Google和Facebook,则采取了另一条路,
他们决定把用户评价纳入到KPI中。
Google在这方面的工作开始得比较早,因此公开的资料也比较多。概括地说,他们雇佣大量的普通人,以用户的角度来对Google搜索排序的质量和广告推荐的质量做主观打分。当打分的量大到一定程度,这些数据就足以成为一个稳定有效的,且可持续追踪并改进的KPI了。Facebook虽然产品领域有所不同,但在个性化推荐上也采取了类似的方法。
回答的最后,还是想重申两个方法论:
- 永远不能依靠单一一个KPI来评价产品上的工作。任何KPI,任何产品,都不能。
- 在明确KPI局限性的前提下, 数字可以终结大多数无意义的扯皮,无论是技术上的,还是政治上的。