现在有很多像今日头条、轻芒阅读这样为你个性推荐资讯的 app,为什么同样是个性推荐,它们却有着不同的风格?今天分享的这篇文章,作者是曾在 Facebook 工作的宋一松,他从 3 个方面为你简单介绍,app 是如何为你推荐个性化资讯的。 不了解今日头条是怎么运作的。不过因为在 Facebook 工作时负责新鲜事(Newsfeed)的个性化推荐与排序,我可以说说 Facebook 是怎么衡量自己推荐和排序的质量的。 在具体执行层面,主要有 3 个方式,分别是从机器学习模型、产品数据,和用户调查上来考核推荐引擎的效果。 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 局限性的前提下,数字可以终结大多数无意义的扯皮,无论是技术上的,还是政治上的。 相关阅读: 「个性推荐」会让你难以跳脱自己的小圈子吗?