亚马逊AWS官方博客

通过个性化在线体育内容提高参与度

在 Pulselive,我们创造体育迷们离不开的体验;无论是板球世界杯官方网站还是英超联赛的 iOS 和 Android 应用程序。

客户衡量我们的关键因素之一是粉丝对视频等数字内容的参与度。但直到最近,每个粉丝看到的视频都是基于最近发布的列表,该列表并没有个性化。

体育组织正在努力了解他们的粉丝是谁以及他们想要什么。可以为每位粉丝收集的大量数字行为数据讲述了他们的独特之处以及他们如何与我们的内容互动。随着可用数据的增加和机器学习 (ML) 的日益普及,客户要求 Pulselive 提供量身定制的内容推荐。

我们在这篇博文中分享了一些经验,讲述我们如何将 Amazon Personalize 添加到我们的平台作为我们的新推荐引擎,以及我们如何将视频消费量提高了 20%。

实施 Amazon Personalize

在我们开始之前,Pulselive 面临两个主要挑战:我们的职员中没有数据科学家,我们需要找到一种我们不具备机器学习 (ML) 经验的工程师能够理解并且仍能产生可衡量结果的解决方案。我们考虑过使用诸如 Amazon SageMaker(仍然需要学习)或 Amazon Personalize 之类的工具,通过外部公司来提供帮助(代价高昂)。

出于以下几个原因,我们最终选择使用 Amazon Personalize:

  1. 无论在技术上还是财务上,该工具的进入门槛都很低。
  2. 我们可以快速进行 A/B 测试,以证明推荐引擎的价值。
  3. 我们可以创建一个简单的概念验证 (PoC),同时尽量减少对现有站点造成中断。
  4. 我们更关心的是影响和改善结果,而不是清楚地了解 Amazon Personalize 的幕后情况。

像任何其他企业一样,我们承受不起对我们的日常运营造成不利影响的后果,但仍然需要相信该解决方案将适用于我们的环境。因此,我们开始在 PoC 中进行 A/B 测试,我们可以在几天内启动并执行。

通过与 Amazon Prototyping 团队合作,我们将首次集成的选项范围缩小到只需对网站进行最少更改并且可以轻松进行 A/B 测试的选项。在检查了向用户显示视频列表的所有位置之后,我们认为对接下来要观看的视频列表进行重新排序是实施个性化内容的最快方法。对于这个原型,我们使用 AWS Lambda 函数和 Amazon API Gateway 提供了一个新的 API,该 API 将拦截更多视频的请求,并使用 Amazon Personalize GetPersonalizedRanking API 对它们进行重新排名。

为了被认为是成功的,该实验需要证明在视频总观看次数或完成百分比方面都有统计上的显著改善。为了实现这一目标,我们需要在足够长的时间内进行测试,以确保我们涵盖有多项体育赛事的日子和没有比赛的安静日子。我们希望通过测试不同的使用模式来消除任何取决于一天中的一段时间或最近是否进行过比赛的行为。我们设置了 2 周的时间范围来收集初始数据。所有用户都是实验的一部分,并随机分配到对照组或测试组。为了使实验尽可能简单,所有视频都是实验的一部分。下图展示了我们的解决方案架构。

首先,我们需要构建一个 Amazon Personalize 解决方案,为我们提供实验的起点。Amazon Personalize 需要用户-项目互动数据集才能定义解决方案并创建一个活动向用户推荐视频。我们通过创建一个 CSV 文件来满足这些要求,该文件包含几周的使用时间内每个视频观看的时间戳、用户 ID 和视频 ID。将交互历史记录上传至 Amazon Personalize 是一个简单的过程,我们可以立即在 AWS 管理控制台中测试这些推荐。为了训练模型,我们使用了包含 30,000 次近期交互的数据集。

为了比较已观看视频总数和视频完成百分比的指标,我们构建了第二个 API 在 Amazon DynamoDB 中记录所有视频互动。第二个 API 解决了通过 PutEvents API 向 Amazon Personalize 通报新互动的问题,这有助于使机器学习 (ML) 模型保持最新。

我们在实验中跟踪了所有视频观看次数以及促使所有用户观看视频的原因。视频提示包括直接链接(例如,来自社交媒体的链接)、来自网站其他部分的链接以及视频列表中的链接。用户每次查看视频页面时,都会看到当前的视频列表或新的重新排名列表,具体取决于他们是在对照组还是测试组中。我们开始实验的对象是测试组中总用户的 5%。当我们的方法没有出现任何问题时(视频消费没有明显下降或 API 错误没有明显增加),我们将这一比例提高至 50%,其余用户充当对照组,并开始收集数据。

从我们的实验中学习

经过两周的 A/B 测试后,我们提取了从 DynamoDB 收集的 KPI,并比较了我们在多个 KPI 中测试的两个变体。我们选择在初步实验中使用一些简单的 KPI,但其他组织的 KPI 可能会有所不同。

我们的第一个 KPI 是每个用户每个会话的视频观看次数。我们最初的假设是,鉴于我们正在对视频列表进行重新排名,我们不会看到有意义的变化;但是,我们测量到每位用户的观看次数增加了 20%。下图总结了每个组的视频观看次数。

除了测量总观看次数之外,我们还想确保用户完整地观看视频。用户每观看视频的 25% 时,我们就发送一个事件,从而可以跟踪此指标。对于每个视频,我们发现,不管该视频是由 Amazon Personalize 推荐还是由原始列表视图推荐,平均完成百分比并没有太大变化。结合观看的视频数量,我们得出的结论是,向每个用户展示个性化的推荐视频列表时,总体观看时间会增加。

我们还跟踪了用户“推荐视频”栏中每个视频的位置以及他们选择的项目。这样我们就可以比较个性化列表与发布有序列表的排名。我们发现这两种变体之间没有太大区别,这表明我们的用户很可能会选择在屏幕上看到的视频,而不是滚动查看整个列表。

在分析了实验结果之后,我们向客户展示了这些结果,并建议我们启用 Amazon Personalize 作为将来对视频进行排名的默认方法。

经验教训

我们在实验中吸取了以下教训,当您实施自己的解决方案时,这些经验教训可能对您有所帮助:

  1. 收集用户-项目互动的历史数据;我们使用了大约 30,000 次互动。
  2. 关注最近的历史数据。尽管您的当务之急是尽可能多地获取历史数据,但最近的互动比以前的互动更有价值。如果您有非常大的历史互动数据集,则可以过滤掉较旧的互动,以减少数据集的大小和训练时间。
  3. 确保您可以使用 SSO 解决方案或生成会话 ID,为所有用户提供一个一致且唯一的 ID。
  4. 在您的网站或应用中找到一个可以运行 A/B 测试的位置,重新排名现有列表或显示推荐项目列表。
  5. 更新您的 API 以调用 Amazon Personalize 并获取新的项目列表。
  6. 部署 A/B 测试并逐步增加实验中的用户百分比。
  7. 检测和衡量,以便您能够了解实验的结果。

结论和后续步骤

我们第一次通过 Amazon Personalize 进军机器学习 (ML) 世界,这让我们感到非常兴奋。我们发现将训练过的模型集成到我们工作流中的整个过程非常简单;与实施 Amazon Personalize 相比,我们为确保拥有正确的 KPI 和数据捕获来证明实验的有用性要花费更多的时间。

将来,我们会开发以下增强功能:

  1. 让我们的开发团队有机会在提供内容列表的任何地方使用 Amazon Personalize,从而更频繁地在我们的整个工作流中集成 Amazon Personalize。
  2. 将使用案例扩展到重新排名之外,以包括推荐的项目。这应该使我们能够显示可能更受每个用户欢迎的旧项目。
  3. 试验模型应该多久重新训练一次 — 实时向模型中插入新的互动是保持新鲜感的好方法,但是模型仍然需要每天进行再训练才能最有效。
  4. 探索我们可以如何与所有客户一起使用 Amazon Personalize 的选项,通过以所有形式推荐最相关的内容来帮助提高粉丝参与度。
  5. 使用推荐筛选条件扩展每个请求的可用参数范围。我们很快会瞄准其他选项,例如进行筛选以包含您最喜欢的选手的视频。

关于作者

Mark Wood 是 Pulselive 的产品解决方案总监。Mark 在 Pulselive 工作了 6 年多,在公司任职期间,他兼任技术总监和软件工程师。在加入 Pulselive 之前,Mark 是 Roke 的高级工程师和 Querix 的开发人员。Mark 毕业于南安普敦大学,获得数学和计算机科学学位。