作者:Bala Krishnamoorthy 和 Rishi Jala,发表于 2024年4月4日,来源于 Advanced (300),Amazon Personalize,Technical Howto
随着新闻媒体公司每天发布大量的文章、视频、音频和其他媒体,各类读者包括个人消费者和企业订阅者常常很难找到与其最相关的新闻内容。为读者提供个性化新闻和体验可以帮助解决这一问题,并创造更具吸引力的互动体验。然而,提供真正个性化的推荐面临几大关键挑战:
捕捉多样的用户兴趣:新闻可能涵盖许多主题,并且在特定主题内,读者的兴趣可能各不相同。处理有限的阅读历史:许多新闻读者的活动历史往往稀疏。推荐系统需要从有限数据中迅速学习用户偏好,以提供价值。时效性和热门话题:每日新闻周期意味着推荐内容需在个性化与新兴热门故事的发现之间取得平衡。兴趣的变化:读者的兴趣可能随时间演变。系统必须能够检测变化并相应调整推荐。可解释性:透明化推荐理由可以增强用户信任。理想的新闻推荐系统应理解个体,并回应更广泛的新闻气候和受众。在本文中,我们将描述如何利用 Amazon Personalize 构建一个可扩展的新闻推荐应用。该解决方案于2023年上半年在一家财富500强媒体公司实施,其他希望构建新闻推荐系统的客户也可以重复使用该解决方案。
Amazon Personalize 非常适合用于新闻推荐引擎,因为它可以实时和批量提供个性化推荐。Amazon Personalize 提供多种推荐算法recipes,例如用户个性化和热门推荐,特别适合于训练新闻推荐模型。用户个性化算法根据用户与内容的互动情况分析其偏好,从而形成针对用户的特定新闻推送。热门推荐算法则补充了这一点,能够实时发现所有用户中涌现的热门新闻。将这两种推荐结合使用,可以使推荐引擎在个性化与发现实时热门故事之间取得平衡。
以下图表展示了由 Amazon Personalize 和相关 AWS 服务支持的新闻推荐应用架构。
该解决方案有以下局限性:
针对刚发布文章几分钟内发布的文章提供个性化推荐可能比较困难。我们将在本帖稍后部分描述如何缓解这一局限性。Amazon Personalize 对用于训练模型的交互和项目数据集的特征数量有限制。在撰写时,Amazon Personalize 尚未提供用户级别的推荐解释。接下来我们将逐个讨论解决方案的主要组件。
实施此解决方案需要以下项:
交互 数据集的历史和实时用户点击数据项目 数据集的历史和实时新闻文章元数据要在 Amazon Personalize 中训练模型,需要提供训练数据。在此解决方案中,您将使用两种类型的 Amazon Personalize 训练数据集:交互数据集 和 项目数据集。交互 数据集包含用户与项目之间的交互数据,而 项目 数据集包含被推荐文章的特征。
您可以采用以下两种方式摄取训练数据:
批量摄取:您可以使用 AWS Glue 转换并摄取存储在 Amazon S3 桶中的交互和项目数据到 Amazon Personalize 数据集。AWS Glue 会执行提取、转换和加载ETL操作,以将数据对齐到 Amazon Personalize 数据集架构。当 ETL 过程完成后,输出文件将被放回到 Amazon S3,准备通过 数据集导入作业 导入 Amazon Personalize。
实时摄取:您可以使用 Amazon Kinesis 数据流 和 AWS Lambda 进行实时数据的增量摄取。Lambda 函数在单个记录级别执行相同的数据转换操作,并通过 PutEvents 和 PutItems API 将数据摄取到 Amazon Personalize。
在此解决方案中,还可以将某些项目和交互数据属性摄取到 Amazon DynamoDB。在实时推理过程中,您可以使用这些属性根据业务规则过滤推荐。例如,文章元数据可能包含公司和行业名称。为了积极推荐用户正在阅读的相关公司或行业的文章,可以记录读者与特定公司和行业文章的互动频率,并使用这些数据与 Amazon Personalize 的筛选器 进一步调整推荐内容。我们将在后面的部分详细讨论如何在 DynamoDB 中使用项目和交互数据属性。
以下图表展示了数据摄取架构。
模型训练的重点应该放在用户个性化模型上,因为它可以使用所有三种 Amazon Personalize 数据集而热门推荐模型仅使用 交互 数据集。我们建议开展系统性实验,逐步改变训练过程的不同方面。对于实施此解决方案的客户团队,他们进行了超过 30 次实验。这包括修改 交互 和 项目 数据集特征、调整提供给模型的交互历史长度、微调 Amazon Personalize 超参数,以及评估显式用户数据集是否能够提升离线性能相对于训练时间的增加。
每个模型变体的评估基于 Amazon Personalize 在训练数据上报告的指标,以及在持出测试数据集上的自定义离线指标。考虑的标准指标包括平均精确度MAP@ KK 是展示给读者的推荐数量、归一化折扣累积增益、平均互惠排名和覆盖率。有关更多信息,请参见 使用指标评估解决方案版本。我们建议将 MAP @ K 视为优先考虑的指标,因为它记录了读者点击的文章数量占推荐给他们的前 K 篇文章的平均值,MAP 指标是实际点击率的良好代理。 K 值应根据读者能够在桌面或移动网页上查看的文章数量选择,避免过多滚动,从而以最小的用户努力评估推荐效果。实施自定义指标,例如推荐的独特性描述推荐输出在候选用户池中的独特性,也可以为推荐的有效性提供见解。
super加速器借助 Amazon Personalize,实验过程允许您确定用户个性化和热门推荐模型的最佳数据集特征组合。热门推荐模型与用户个性化模型存在于同一 Amazon Personalize 数据集组,因此可以使用相同的 交互 数据集特征。
当读者访问新闻公司的网页时,将通过 Amazon API Gateway 发起对新闻推荐系统的 API 调用。这将触发一个 Lambda 函数,该函数调用 Amazon Personalize 模型的终端节点,以获取 实时推荐。在推理过程中,您可以利用 筛选器 根据文章或读者互动属性过滤初步推荐输出。例如,如果“新闻主题”如体育、生活方式或政治是文章属性之一,则可以根据产品要求将推荐限于特定新闻主题。同样,您也可以根据读者的互动事件过滤推荐,例如排除已经阅读过的文章。
实时推荐的一个关键挑战是如何有效地将刚发布的文章也称为冷文章纳入推荐输出。刚发布的文章没有历史互动数据,而推荐系统通常依赖于这些数据来评估刚发布文章与特定用户的相关性即便仅依靠用户与文章之间的关系信号。
Amazon Personalize 可以每隔 2 小时自动检测并推荐新摄取到 项目 数据集的文章。然而,由于此用例专注于新闻推荐,您需要一种方法来尽快推荐已发布的新文章。
解决这一问题的一种方法是设计一种机制,将刚发布的文章随机插入到每位读者的最终推荐输出中。您可以添加功能控制最终推荐集中刚发布的文章所占的百分比,并且与 Amazon Personalize 的原始推荐输出相似,根据文章属性如“新闻主题”对刚发布的文章进行筛选如果这是产品要求。您可以在 DynamoDB 上跟踪与刚发布文章的互动情况,随着它们开始逐步进入系统,可在推荐后处理阶段优先考虑最受欢迎的刚发布文章,直到这些文章被 Amazon Personalize 模型检测和处理。
在获取最终推荐文章集后,将该输出提交给另一个后处理 Lambda 函数以检查输出是否符合预设的业务规则。这些规则可能包括检查推荐文章是否满足网页布局规范,例如在网页浏览器前端服务推荐时。如果需要,可以对文章进行重新排名,以确保满足业务规则。我们建议通过实施一个函数来实现重新排名,以便高排名的文章最多递减一位,直到所有业务规则得到满足,从而对读者的相关性损失最小化。最终的后处理文章列表将被返回到发起推荐请求的网络服务。
以下图表展示了此步骤的架构。
个性化新闻仪表板通过实时推荐要求读者主动搜索新闻,但在我们繁忙的生活中,有时更容易接收推荐的新闻。为了以电子邮件摘要的方式提供个性化新闻文章,您可以使用 AWS Step Functions 工作流生成批量推荐。批量推荐工作流从我们的用户个性化模型或热门推荐模型的终端节点收集和后处理推荐,这使得团队可以灵活选择推送给读者的个性化和热门新闻文章的组合。开发人员还可以选择使用 Amazon Personalize 的 批量推理 特性;然而,在撰写时,创建 Amazon Personalize 批量推理作业不支持包括在训练自定义模型后摄取的项目,也不支持热门推荐算法。
在批量推理 Step Functions 工作流中,读者列表被分割成多个批次,并行处理,然后提交给后处理和验证层,最后发送给电子邮件生成服务。以下图表展示了这一工作流。
为了有效扩展,您还需要使新闻推荐系统能够容纳不断增长的用户数量和流量,而不会降低读者体验。Amazon Personalize 模型终端节点本身 自动扩展 以适应流量增加。工程师只需为每个 Amazon Personalize 终端节点设置并监控最小预置每秒交易TPS变量。
除了 Amazon Personalize,本文所提供的新闻推荐应用也基于无服务的 AWS 服务构建,使工程团队能够专注于提供最佳读者体验,而无需担心基础设施维护。
在这个关注度经济的时代,提供相关且及时的内容变得愈发重要。本文讨论了如何利用 Amazon Personalize 构建可扩展的新闻推荐系统,以及组织可以实施的解决方案,以应对提供新闻推荐的独特挑战。
如需了解更多有关 Amazon Personalize 的信息,以及它如何帮助您的组织构建推荐系统,请查看 Amazon Personalize 开发者指南。
祝您构建顺利!
Bala Krishnamoorthy 是 AWS 专业服务的高级数据科学家,致力于帮助客户构建和部署 AI 驱动的解决方案以解决业务挑战。拥有丰富的跨领域客户经验,包括媒体与娱乐、金融服务、医疗保健和技术。在闲暇时间,他喜欢与家人朋友相聚,保持活跃,尝试新餐馆、旅行,并以一杯热腾腾的咖啡开始新的一天。
Rishi Jala 是 AWS 专业服务的 NoSQL 数据架构师,专注于架构和构建高度可扩展的应用程序,使用 Amazon DynamoDB 等 NoSQL 数据库。热衷于解决客户问题,他提供量身定制的解决方案,以推动数字领域的成功。
加载评论
全国咨询热线
Super加速器(中国)官方网站|Super加速器
联系电话:13594780123
联系人:李总
邮箱:sworn@mac.com
公司地址:邵武市清塑囚牢483号
微信扫一扫
手机官网