YouTube推荐系统(上):The YouTube Video Recommendation System

这是最早的一篇YouTube的推荐系统的文章,原文来自The YouTube Video Recommendation System。发表于2010年。

YouTube拥有世界上最大的视频推荐系统之一,在2010年,整个系统还比较简略,不过也值得了解一下。

Goal

用户使用YouTube时一般有三种目的:1. 观看特定的video;2.观看特定topic的video;3.浏览并寻找感兴趣的视频。推荐系统主要为第三种需求服务,因此,推荐系统的目标是为用户推荐高质量并贴合他们的兴趣的视频,推荐结果应该随时间和用户最近的行为更新。
在YouTube的推荐应用中,存在一些特殊的挑战:

  • 用户在YouTube上传的视频一般没有非常全的metadata,很多除了题目以外就没有什么有价值的信息。
  • YouTube上的视频一般很短(小于10分钟),因此用户行为也短暂、多变而且噪声很多。
  • YouTube上的视频生命周期很短。

这是YouTube的推荐和普通视频网站的推荐不一样的地方,也是现在的很多段视频公司会关注的问题。

系统设计

推荐系统的输入主要由内容相关的信息和用户行为相关的信息组成。其中,用户行为包括explicit和implicit feedback。前者是指用户评分、明确表示喜欢、不喜欢等行为,后者是浏览、观看等行为。原始数据中还含有非常多的噪声,很多不可控因素会影响原始数据的质量。

为了确定要推荐哪些视频,文章给出了相关视频的定义:视频v的相关视频是指可能在视频v之后被用户观看的视频。两个视频的相关性由关联规则挖掘方法来确定。视频i和j的相关性定义为:
r ( v i , v j ) = c i , j / f ( v i , v j ) r(v_i, v_j) = c_{i,j} / f(v_i, v_j) r(vi,vj)=ci,j/f(vi,vj),其中 c i , j c_{i,j} ci,j表示 v i v_i vi v j v_j vj共同出现的次数, f ( v i , v j ) f(v_i, v_j) f(vi,vj)是一个和视频 v i v_i vi v j v_j vj的出现次数相关的函数,最简单的一个此类函数为 f ( v i , v j ) = c i ∗ c j f(v_i, v_j) = c_i *c_j f(vi,vj)=cicj。利用这个相关系数可以选出与种子视频 v i v_i vi相关的视频集合 R i = r ( v i , v j ) R_i = r(v_i, v_j) Ri=r(vi,vj)。简单地说,这个视频集合是由一个threshold确定的。

Generating Recommendation Candidates

将用户观看过的视频、喜欢过的视频、收藏过的视频等等作为种子集合,再把它们的相关视频集合合并到一起,就得到了一个最简单的召回策略。但实际上,由于用户的口味在一定时期往往保持一致,这些种子视频的范围往往很狭窄。

为了扩大多样性,YouTube选择召回的不是1步相关视频,而是n-步相关视频,即种子视频迭代n次后得到的相关视频集合。

Ranking

在得到召回的视频集合以后,需要对这些相关视频进行排序。
用于排序的数据主要包括:

  • 视频质量:包括观看次数、视频评分、评论、喜欢和分享次数等等
  • 用户数据:视频和当前用户的兴趣的match程度
  • 多样性:要在被推荐的视频集合的类别中做一个平衡,以保持结果的多样性

这些数据最终被线性组合起来,得到ranking的评分。

其他

文章还提到了其他一些细节:

  • 推荐理由:推荐视频时会给出相关种子视频的链接,以解释为什么推荐了该视频
  • 底层使用了BigTable和MapReduce
  • 使用A/B测试系统来测试结果
  • 使用click through rate (CTR), long CTR (only counting clicks that led to watches of a substantial fraction of the video), session length, time until first long watch, 和recommendation coverage (the fraction of logged in users with recommendations)等作为评价指标。

你可能感兴趣的:(推荐系统,论文阅读)