本文主要总结和翻译自Learning a Personalized Homepage。但这并非彻底和完整的翻译稿。算法
正如咱们在以前的博客文章中所描述的那样,在Netflix,咱们普遍使用个性化,并努力抓住向超过5700万用户中的每个呈现正确内容的机会。 用户与咱们的推荐互动的主要方式是经过主页,当他们在任何支持的设备上登陆Netflix时,他们会看到主页。 主页的主要功能是帮助每一个成员轻松找到他们喜欢的东西。 咱们面临的一个问题是,咱们的目录包含的视频数量超过了单个页面上显示的数量,每一个成员都有本身独特的兴趣。 所以,一个算法挑战是如何最好地定制每一个成员的主页以使其涵盖他们的兴趣和观看意图,而且仍然容许他们探索其它内容。机器学习
这类问题并不是Netflix所独有,而是其它新闻网站,搜索引擎和在线商店等共有的。 任何须要从大量可用可能性中选择项目而后以连贯且易于导航的方式呈现项目的站点将面临一样的通常挑战。 固然,优化Netflix主页的问题有其独特的方面,好比界面限制,以及与其余媒体相好比何消费电影和电视的差别。ide
咱们将主页组织成一系列行,以便用户轻松浏览咱们目录的大部份内容。 经过连续呈现连贯的视频组,为每行提供有意义的名称,并以有用的顺序呈现行,用户能够快速决定连续的整组视频是否可能包含他们有兴趣观看的内容。 这容许用户更深刻地潜水并在主题中查找更多视频或跳过它们并查看另外一行。函数
将视频分组的一种天然方式是按genre或subgenre(这个概念在以前的文章中提到过)或其余视频元数据维度(如发布日期)。 固然,连续视频之间的关系不必定是元数据,也能够是行为信息(例如协同过滤算法),咱们认为用户可能观看的视频,甚至是一段朋友观看的视频 所以,每行能够为用户提供惟一且个性化的目录片断以供导航。 建立个性化主页的挑战和乐趣的一部分是找出建立有用的视频分组的新方法,咱们一直在尝试这些方法。布局
一旦咱们为页面考虑了一组可能的视频组,咱们就能够开始从它们组装主页了。为此,咱们首先根据咱们了解的用户查找可能与用户相关的候选分组。这还涉及提供证据(或解释)以支持一行的呈现,例如该成员先前在一种类型中观看的电影。接下来,咱们会过滤每一个群组以处理成熟度等级的问题,或者删除以前观看过的视频。在过滤以后,咱们根据适合行的排名算法对每一个组中的视频进行排名,该排序算法产生视频的排序,使得组中成员的最相关视频位于行的前面。从这组行候选中,咱们能够应用行选择算法来组装整页。在页面组装完成后,咱们会执行额外的过滤,例如重复数据删除,以删除重复视频并将行格式化为适合设备的大小。学习
咱们的个性化和推荐方法主要目的是帮助咱们的user找到新的东西,咱们称之为discovery。可是,咱们还但愿让user可以轻松观看节目的下一集或从新观看他们过去观看的内容,这些内容一般不属于推荐范围。咱们但愿咱们的建议准确,但它们也须要多样化。咱们但愿可以突出咱们目标中的深度,以及咱们在其余领域的广度,以帮助咱们的成员探索甚至找到新的兴趣。咱们但愿咱们的建议是新鲜的,并对user action例如观看节目,添加到列表或评级作出响应;但咱们也想要一些稳定性,以便人们熟悉他们的主页,而且能够轻松找到他们最近推荐过的视频。最后,咱们须要放置面向任务的行,例如“个人列表”。测试
每一个设备都有不一样的硬件功能,能够限制任什么时候候显示的视频或行数以及整个页面的大小。 所以,在生成页面时必须知道它正在为其建立页面的设备的约束,包括行数,行的最小和最大长度,页面的可见部分的大小,以及某些行是否不适用于某个设备。优化
咱们能够经过几种方法在算法上构建咱们的主页。 最基本的是基于规则的方法,咱们使用了很长时间。 这里有一组规则定义了一个模板,该模板指示全部成员在页面上的某些位置能够进入哪些行类型。 例如,规则能够指定第一行是“keep watching”(若是有的话),而后是Top Picks(若是有的话),而后是Netflix上的Popular,而后是5个个性化的genre行,依此类推。 这种方法中惟一的personalization是以个性化的方式选择候选行,例如包括“Because you watched <video>”行。 要选择每种类型中的特定行,咱们使用简单的启发式和抽样算法。 咱们使用A / B测试来演化此模板,以了解为全部user放置行的合适位置。网站
这种方法对咱们颇有帮助,但它忽略了咱们认为对页面质量很重要的许多方面.模板的规则随着时间的推移而增加,变得过于复杂,没法处理各类行以及它们应如何放置。ui
为了解决这些问题,咱们能够考虑在主页上个性化行的排序。 这样作的最简单方法是将行视为排名问题中的项目,咱们将其称为行排名方法。 对于这种方法,咱们能够为行开发评分函数,将应用于全部候选行,按该函数排序,而后选择最优先的一些行来填充页面,从而利用大量现有的推荐方法。 然而,这样作会致使缺少多样性,有人会获得一个微小变化的页面,例如页面上的每一行看起来主题不一样,但其实都充满了不一样变体的喜剧:late-night, family, romantic, action等。
添加多样性的一种简单方法是使用评分函数从行排名方法切换到逐级方法,该评分函数既考虑行又考虑其与先前行和先前已为页面选择的视频的关系。 在这种状况下,能够采用简单的贪心方法,选择最大化此函数的行做为要使用的下一行,而后将下一个位置的全部行从新评分。 这种贪心的选择可能没法产生最佳页面。 使用具备k行前瞻的分阶段方法能够产生比贪心选择更优化的页面,可是它带来了增长的计算成本。
然而,即便是阶段式算法也不能保证产生最佳页面,由于固定的时间范围可能会限制在页面下方填充更好的行的能力。 若是咱们能够定义整页评分函数,咱们能够尝试经过适当选择行和视频来填充页面来优化它。 固然,页面组合的搜索空间很大,所以直接优化定义整个页面质量的函数在算力上是很难实现的。
使用任何这些方法解决页面优化问题时,还须要考虑以前提到的各类约束,例如重复数据删除,过滤和特定于设备的约束。 这些约束中的每个都增长了优化问题的复杂性。
在造成主页时,考虑成员如何浏览页面也是重要的,即,考虑他们可能在会话中注意页面上的哪些位置。 将最相关的视频放置在最有可能被看到的位置(一般是左上角),能够减小成员查找与观看相关的内容的时间。 然而,在二维页面上建模导航是困难的,特别是考虑到不一样的人可能导航模式不一样,人们的导航模式可能随时间而变化,基于交互设计在不一样设备类型之间存在导航差别,而且导航 显然取决于所显示内容的相关性。 经过精确的导航模型,咱们能够更好地了解视频和行的位置以及页面上的重点。
构建个性化页面的核心是评分功能,能够评估行或页面的质量。 虽然咱们可使用启发式或直觉来构建这样的评分函数并使用A / B测试进行调整,但咱们更愿意从数据中学习一个好的函数,以便咱们能够轻松地合并新的数据源并平衡主页的各个不一样方面。 为此,咱们可使用咱们为user建立不一样的主页,他们实际看到的内容,他们的interactions以及他们的playback进行训练,从而用机器学习算法建立评分功能。
咱们可使用大量features来represent rows。因为行包含一组视频,所以咱们能够在行表示中聚合使用这些视频的features。这些feature能够是简单的元数据或更有用的基于model的features,它们表示给用户推荐特定视频的理想程度。固然,咱们有许多不一样的推荐方法,可使用ensemble方法把它们聚合起来。咱们还能够查看与行相关的一些feature,例如对于对特定genre感兴趣的user有多少,以及当前user过去是否已消耗该行或相似行。咱们还能够添加简单的描述性feature,例如这一行连续多少个视频,该行放置在页面上的位置,以及咱们在过去显示该行的频率。咱们还能够经过查看行与其他行的类似程度或行中的视频与其他部分的视频类似程度,将多样性归入评分。
用于行评分的机器学习模型存在若干挑战。一个挑战是处理presentation bias,因为用户只能在咱们显示的主页上选择视频播放,没被显示的训练数据就可能产生误差。更复杂的是,页面上某行的位置会极大地影响user是否能实际看到该并选择从中进行播放。为了处理这些presentation和position bias,咱们须要很是当心地选择训练数据。关于如何在模型中选择视频归属的行也存在挑战;视频可能在过去的某一行中播放过,但这是否意味着若是该视频被放置在不一样的行的第一个位置,该user会选择相同的视频?多样性的引入也具备挑战性,由于页面上不一样位置的潜在行的特征空间已经很大,但当页面的其他部分考虑到多样性时,可能的特征空间变得更大也更难以搜索。
与任何算法方法同样,要应对这些挑战,选择一个好的指标很是重要。 在页面生成中最重要的是如何评估在离线实验期间由特定算法产生的页面的质量。 虽然咱们最终将在A / B测试中在线测试任何潜在的算法改进,但咱们但愿可以将咱们宝贵的A / B测试资源集中在咱们有证据可能提升页面质量的算法上。 咱们还须要可以在A / B测试以前调整这些算法的参数。
固然,Recall是一个基本指标,须要选择m和n的值,但咱们一样能够扩展指标如NDCG或MRR到二维状况。 咱们还能够调整导航模型例如Expected Reciprocal Rank,以在页面中包含二维导航。 经过定义这样的page-level metrics,咱们可使用它们来评估用于生成页面的任何算法方法的变化,不只仅是algorithms for ordering the rows,还有selection, filtering, 和ranking algorithms。
在设计主页时,不乏挑战性的问题。 例如:什么时候考虑其余上下文变量(例如一天中的时间或设备),以及咱们如何填充主页? 咱们如何在找到最佳页面和计算成本之间找到适当的权衡? 咱们如何在user关键的前几个会话期间造成主页,而这偏偏是在咱们得到最少信息的时候? 咱们须要考虑并权衡每一个问题的重要性,以便不断改进Netflix主页。
个性化页面生成是一个具备挑战性的问题,涉及平衡多种因素,咱们认为这只是一个开始。