生成数据智能

使用 Amazon Personalize 构建新闻推荐应用程序 |亚马逊网络服务

日期:

由于新闻媒体公司每天都会创建大量文章、视频、录音和其他媒体,各种类型的读者(个人消费者、企业订阅者等)常常发现很难找到与他们最相关的新闻内容。向读者提供个性化的新闻和体验可以帮助解决这个问题,并创造更有吸引力的体验。然而,提供真正个性化的推荐面临着几个关键挑战:

  • 捕捉不同的用户兴趣 – 新闻可以跨越许多主题,甚至在特定主题内,读者也可以有不同的兴趣。
  • 解决有限的读者历史 – 许多新闻读者的活动历史记录很少。推荐者必须从有限的数据中快速了解偏好才能提供价值。
  • 时效性和趋势性 – 每日新闻周期意味着推荐必须平衡个性化内容与新的流行故事的发现。
  • 兴趣改变 – 读者的兴趣会随着时间的推移而变化。系统必须检测变化并相应地调整建议。
  • 可解释性 – 透明地说明为什么推荐某些故事可以建立用户信任。理想的新闻推荐系统了解个人并响应更广泛的新闻氛围和受众。应对这些挑战是将读者与他们认为信息丰富、引人入胜的内容有效地联系起来的关键。

在这篇文章中,我们描述了如何 亚马逊个性化 可以为可扩展的新闻推荐应用程序提供支持。该解决方案已于 500 年上半年在财富 1 强媒体客户中实施,并且可以重复用于有兴趣构建新闻推荐系统的其他客户。

解决方案概述

Amazon Personalize 非常适合为新闻推荐引擎提供动力,因为它能够大规模提供实时和批量个性化推荐。 Amazon Personalize 提供各种推荐配方(算法),例如 User Personalization 和 Trending Now 配方,特别适合训练新闻推荐模型。用户个性化配方根据每个用户随着时间的推移对内容的参与程度来分析他们的偏好。这会产生定制的新闻源,显示与个人用户最相关的主题和来源。 Trending Now 配方通过实时检测所有用户的上升趋势和流行新闻故事来补充这一点。结合这两种方法的推荐,推荐引擎可以在个性化与及时发现高兴趣故事之间取得平衡。

下图说明了由 Amazon Personalize 提供支持并支持 AWS 服务的新闻推荐应用程序的架构。

此解决方案具有以下限制:

  • 为刚刚发表的文章(几分钟前发表的文章)提供个性化推荐可能具有挑战性。我们将在本文后面描述如何减轻此限制。
  • Amazon Personalize 具有固定数量的交互和项目数据集功能,可用于训练模型。
  • 截至撰写本文时,Amazon Personalize 不提供用户级别的推荐说明。

让我们逐步了解该解决方案的每个主要组件。

先决条件

要实施此解决方案,您需要具备以下条件:

  • 历史和实时用户点击数据 interactions 数据集
  • 历史和实时新闻文章元数据 items 数据集

摄取并准备数据

要在 Amazon Personalize 中训练模型,您需要提供训练数据。在此解决方案中,您使用两种类型的 Amazon Personalize 训练数据集: 交互数据集项目数据集。 该 interactions 数据集包含有关用户-项目-时间戳交互的数据,以及 items 数据集包含推荐文章的特征。

您可以采用两种不同的方法来获取训练数据:

  • 批量摄取 - 您可以使用 AWS胶水 转换和摄取驻留在一个中的交互和项目数据 亚马逊简单存储服务 (Amazon S3) 存储桶到 Amazon Personalize 数据集。 AWS Glue 执行提取、转换和加载 (ETL) 操作,以使数据与 Amazon Personalize 数据集架构保持一致。 ETL 过程完成后,输出文件将放回到 Amazon S3 中,准备通过以下方式摄取到 Amazon Personalize 中: 数据集导入作业.
  • 实时摄取 - 您可以使用 Amazon Kinesis数据流AWS Lambda 增量摄取实时数据。 Lambda 函数在单个记录级别执行与批量提取作业相同的数据转换操作,并使用以下方法将数据提取到 Amazon Personalize 中: 放置事件放置物品 蜜蜂。

在此解决方案中,您还可以将某些项目和交互数据属性提取到 Amazon DynamoDB。您可以在实时推理期间使用这些属性来按业务规则过滤推荐。例如,文章元数据可能包含文章中的公司和行业名称。要主动推荐用户正在阅读的公司或行业的文章,您可以记录读者阅读有关特定公司和行业的文章的频率,并将此数据用于 亚马逊个性化过滤器 进一步定制推荐内容。我们将在本文后面详细讨论如何在 DynamoDB 中使用项目和交互数据属性。

下图说明了数据摄取架构。

训练模型

大部分模型训练工作应集中在用户个性化模型上,因为它可以使用所有三个 Amazon Personalize 数据集(而 Trending Now 模型仅使用 interactions 数据集)。我们建议进行实验,系统地改变训练过程的不同方面。对于实施此解决方案的客户,团队进行了 30 多个实验。这包括修改 interactionsitems 数据集功能,调整提供给模型的交互历史记录的长度,调整 Amazon Personalize 超参数,以及评估显式用户的数据集是否提高了离线性能(相对于训练时间的增加)。

每个模型变体均根据 Amazon Personalize 报告的训练数据指标以及保留测试数据集的自定义离线指标进行评估。要考虑的标准指标包括平均精度 (MAP) @ K(其中 K 是向读者提供的推荐数量)、标准化折扣累积增益、平均倒数排名和覆盖率。有关这些指标的更多信息,请参阅 使用指标评估解决方案版本。我们建议在这些指标中优先考虑 MAP @ K,它捕获读者在推荐给他们的前 K 篇文章中点击的平均文章数,因为 MAP 指标可以很好地代表(真实)文章点击率。 K 应根据读者无需滚动即可在桌面或移动网页上查看的文章数量来选择,从而使您能够以最少的读者努力来评估推荐效果。实施自定义指标,例如推荐独特性(描述推荐输出在候选用户池中的独特性),还可以深入了解推荐有效性。

借助 Amazon Personalize,实验过程允许您确定用户个性化和 Trending Now 模型的最佳数据集特征集。 Trending Now 模型存在于同一个 Amazon Personalize 中 数据集组 与用户个性化模型一样,因此它使用相同的一组 interactions 数据集特征。

生成实时推荐

当读者访问新闻公司的网页时,将通过以下方式向新闻推荐器发出 API 调用 Amazon API网关。这会触发 Lambda 函数,该函数调用 Amazon Personalize 模型的终端节点来获取 实时推荐。在推理过程中,您可以使用 过滤器 根据文章或读者交互属性过滤初始推荐输出。例如,如果“新闻主题”(例如体育、生活方式或政治)是文章属性,则您可以将推荐限制为特定新闻主题(如果这是产品要求)。同样,您可以对读者交互事件使用过滤器,例如排除读者已阅读的文章。

实时推荐的一个关键挑战是将刚刚发布的文章(也称为冷项)有效地纳入推荐输出中。刚刚发布的文章没有推荐者通常依赖的任何历史交互数据,并且推荐系统需要足够的处理时间来评估刚刚发布的文章与特定用户的相关程度(即使仅使用用户-项目关系信号)。

Amazon Personalize 可以本机自动检测并推荐摄入到的新文章 items 每 2 小时收集一次数据集。但是,由于此用例侧重于新闻推荐,因此您需要一种在新文章发布并准备好供读者阅读后立即推荐的方法。

解决这个问题的一种方法是设计一种机制,将刚刚发布的文章随机插入到每个读者的最终推荐输出中。您可以添加一项功能来控制最终推荐集中的文章中刚刚发布的文章的百分比,并且与 Amazon Personalize 的原始推荐输出类似,您可以按文章属性(例如“新闻主题”)过滤刚刚发布的文章)如果是产品要求。您可以在 DynamoDB 中的刚刚发布的文章开始慢慢进入系统时跟踪它们的交互,并在推荐后处理过程中优先考虑最受欢迎的刚刚发布的文章,直到 Amazon Personalize 模型检测到并处理刚刚发布的文章。

获得最终的推荐文章集后,此输出将提交到另一个后处理 Lambda 函数,该函数检查输出以查看其是否符合预先指定的业务规则。例如,这些可以包括检查推荐的文章是否符合网页布局规范(如果推荐是在网络浏览器前端提供的)。如果需要,可以对文章重新排序以确保满足业务规则。我们建议通过实现一种功能来重新排名,该功能允许排名较高的文章一次只排名下降一个位置,直到满足所有业务规则,从而为读者提供最小的相关性损失。后处理文章的最终列表将返回到发起推荐请求的 Web 服务。

下图说明了解决方案中此步骤的架构。

生成批量推荐

个性化新闻仪表板(通过实时推荐)要求读者主动搜索新闻,但在我们当今忙碌的生活中,有时将热门新闻发送给您会更容易。要将个性化新闻文章作为电子邮件摘要提供,您可以使用 AWS步骤功能 生成批量推荐的工作流程。批量推荐工作流程从我们的用户个性化模型或“立即趋势”模型端点收集并后处理推荐,从而可以灵活地选择团队想要推送给读者的个性化和趋势文章的组合。开发人员还可以选择使用 Amazon Personalize 批量推理 特征;但是,在撰写本文时,创建 Amazon Personalize 批量推理作业不支持包含在训练 Amazon Personalize 自定义模型后摄取的项目,并且不支持 Trending Now 配方。

在批量推理 Step Functions 工作流程中,读者列表会被分为多个批次,并行处理,并在发送到电子邮件生成服务之前提交到后处理和验证层。下图说明了此工作流程。

扩展推荐系统

为了有效扩展,您还需要新闻推荐器来适应不断增长的用户数量和增加的流量,而不会对读者体验造成任何影响。 Amazon Personalize 本地模型终端节点 自动缩放 以满足增加的流量。工程师只需为每个 Amazon Personalize 终端节点设置和监控每秒最小预置事务数 (TPS) 变量。

除了 Amazon Personalize 之外,此处介绍的新闻推荐应用程序是使用无服务器 AWS 服务构建的,使工程团队能够专注于提供最佳的读者体验,而无需担心基础设施维护。

结论

在注意力经济中,为消费者提供相关且及时的内容变得越来越重要。在这篇文章中,我们讨论了如何使用 Amazon Personalize 构建可扩展的新闻推荐系统,以及组织可以实施的策略来应对提供新闻推荐的独特挑战。

要了解有关 Amazon Personalize 以及它如何帮助您的组织构建推荐系统的更多信息,请查看 亚马逊个性化开发人员指南.

建设愉快!


作者简介

巴拉克里希纳莫蒂 是 AWS Professional Services 的高级数据科学家,帮助客户构建和部署人工智能驱动的解决方案来解决他们的业务挑战。他曾与不同行业的客户合作,包括媒体和娱乐、金融服务、医疗保健和技术。在空闲时间,他喜欢与家人/朋友共度时光、保持活力、尝试新餐厅、旅行以及以一杯热气腾腾的咖啡开始新的一天。

里希贾拉 是 AWS 专业服务的 NoSQL 数据架构师。他专注于使用 NoSQL 数据库(例如 Amazon DynamoDB)设计和构建高度可扩展的应用程序。他热衷于解决客户问题,提供量身定制的解决方案以推动数字领域的成功。

现货图片

最新情报

现货图片