这是最早的一篇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的相关性定义为:
,其中
表示
和
共同出现的次数,
是一个和视频
和
的出现次数相关的函数,最简单的一个此类函数为
。利用这个相关系数可以选出与种子视频
相关的视频集合
。简单地说,这个视频集合是由一个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)等作为评价指标。