17611538698
webmaster@21cto.com

类似今日头条这样的个性化推荐网站怎么评价推荐质量的优劣?

资讯 0 2442 2017-04-22 12:00:54
timg.jpeg

这篇文章是知乎一个话题讨论的优秀回答,分别来自宋一松和刘韬。宋一松在Facebook工作时负责新鲜事(Newsfeed)的个性化推荐与排序,因此他来说说Facebook是怎么衡量自己推荐和排序的质量的。刘韬从指标的角度来对这个问题进行解释和阐述。


  在具体执行层面,主要有三个方式,分别是从机器学习模型产品数据,和用户调查上来考核推荐引擎的效果。

  1. 机器学习模型
  推荐引擎的一大核心就是机器学习(不过现在都说人工智能了,但本质上还是supervised learning)。如果是想考察机器学习模型的质量,学术上早就有一套成熟的实践方法。无论是模型的选择(比如从decision tree替换成neural network),还是迭代改进(比如模型训练时多用一倍的数据),都可以使用基于supervised learning的衡量办法。最常见的就是AUC。

  另一方面,对于某一类特定问题也有更细致的指标。比如说,可以通过模型特征的重要性(feature importance)知道新加的特征是不是有用。

  2. 产品数据
  再牛逼的机器学习模型都要经历产品数据的实际检验。这方面大家就都比较熟悉了,KPI嘛。不过在Facebook特别是Newsfeed这种牵一发动全身的地方,我们会追踪一系列数据来描述产品,而不是依赖某一个单一标准。这些数据包括但不限于:
 

1、日/月活跃用户(DAU,MAU)
2、用户互动 (点赞,评论,转发等)
3、用户发帖量
4、用户停留时间和消耗的内容量
5、收入
6、用户互动率(比如看过的内容中点赞/评论/长阅读/收藏的比例)
7、用户举报和屏蔽的数量  而且,在日常的快速迭代和A/B测试中,只有这些笼统的数据是不够的,我们还需要些更细致的数据来真正理解我们的一些改动。比如说:8、内容类型的分布是怎么变动的:用户原创和转发的比重分布,网页链接和图片视频的比重分布,长视频和短视频的比重分布等等
8、对公众帐号是怎么影响的:什么样的公众号会受益于这次改动
9、哪些第三方巨头受到了影响,影响是否合理:比如我最早在FB实习时候的项目是整顿SPAM帐号,那个改动重创了Zynga(因为Zynga严重依赖用户骚扰他的好友来吸量),但大家觉得挺合理的,让公关去沟通了下就发布了。
10、另外,为了防止短暂的眼球效应,对每一个重要的产品决策,我们都会维护一个长期的backtest,用来评估这个决策的长久影响。比如说:对于在feed里面放广告这个决定,我们会选择一小部分用户,对他们长期不显示广告,然后将他们的用户活跃度同正常能看到广告的用户做对比,来衡量广告的长期影响。
11、类似的,对于Newsfeed是否排序,我们也有一个holdout group,他们的feed是完全按时间排的。  这样,对每一个可能会有争议的决策,但未来的每个时间点,我们都能清楚的知道,我们是面临着怎样的取舍。有了这层保障,在决策的当下,我们也就敢于冒险些,走得更快些。



  3. 用户调查
  大多数产品数据有其局限性,因为他们是显性而被动的。比如说,你给用户推送了一个博眼球的低俗内容,用户在当下可能是会去点开看的,所以数据上是好的。但用户可能心里对这个内容的评价是低的,连带着对作为内容平台的产品也会看轻,长此以往对产品的伤害是巨大的。
  KPI无法完全描述产品质量,在硅谷互联网圈是有共识的,但如何解决,每个公司答案都不同。Twitter系的CEO们,无论是Jack Dorsey还是Evan Williams,都倾向于轻视KPI而依赖自己主观想法来决策。Google和Facebook,则采取了另一条路,他们决定把用户评价纳入到KPI中
  Google在这方面的工作开始得比较早,因此公开的资料也比较多。概括地说,他们雇佣大量的普通人,以用户的角度来对Google搜索排序的质量和广告推荐的质量做主观打分。当打分的量大到一定程度,这些数据就足以成为一个稳定有效的,且可持续追踪并改进的KPI了。Facebook虽然产品领域有所不同,但在个性化推荐上也采取了类似的方法。
  回答的最后,还是想重申两个方法论:

永远不能依靠单一一个KPI来评价产品上的工作。任何KPI,任何产品,都不能。
在明确KPI局限性的前提下,数字可以终结大多数无意义的扯皮,无论是技术上的,还是政治上的。


  推荐类产品如果用相关性来做衡量指标,可能会导致模型过度收敛,最后推荐出的内容越来越相似。一个典型的反例就是两三年之前的豆瓣FM,我在上面听过几首张悬的歌之后,不停的推荐张悬、清新这种风格的曲目,每次听上几首便会有「腻」的感觉。所以好的推荐引擎一定是兼顾了收敛和发散的。

  那么用数据说话呢。理想的情况j是:

  首先,制定一个(多个)核心指标来衡量公司的产品状态。比如 Medium 的 CEO Evan 说他们最关心的是用户的阅读时长。

  其次,大的指标可以拆分成较细的指标,或者用一些次重要的指标辅助。比如阅读时长可以拆分为阅读的文章数和文章平均阅读时长;阅读时长之外,也可以加入互动数(评论数/赞同数/etc)来衡量用户对阅读的内容是否感兴趣。

  最后,根据算法的迭代,进行对照试验,看 key metrics 的变化是否符合预期,符合上线,不符合下线修改再做测试即可。

  然而现实情况并不是这么简单——
  指标的制定异常困难,想建立一套数据体系来衡量产品的质量,需要多次的尝试和往复;加上公司不同部门、部门里每个人,对于事情的看法、甚至是价值观的不同,其中不乏撕x的情况。

  以今日头条为例,CTR (click through rate) 是常见的用来衡量搜索或推荐产品的指标,比如今日头条推荐了一条新闻,10000个人看到了,最后有多少人点击了这条新闻去查看了详细内容呢?理论上,推荐的质量越高,点击率就应该越高。

  但是正如 Evan 所言,片面的追求单一指标是有很大的风险的。为了提高点击率,推荐了很多标题党、与色情、暴力沾边的内容,都可能使 CTR 上升,但这并不意味产品或推荐的质量有提升(至少我是这么认为的)。所以在制定 key metrics 的时候,必须非常慎重。

  说了这么多其实就两点。

  1. 结果指标比相关性更好。
  2. 结果指标的制定需要非常慎重。

  利益相关:毫不相关。

评论