发布于: Aug 11, 2022

基于机器学习的智能推荐系统早已不是什么新鲜概念,但开发这类系统仍是一项需要投入大量资源的任务。无论是训练与推理期间的数据管理,还是运营具备可扩展性的机器学习实时 API 端点,都着实令人头痛。Amazon Personalize 将 Amazon.com 过去二十多年来使用的同一套机器学习技术体系交付至您手中,轻松将复杂的个性化功能引入到您的应用程序,且无需任何机器学习专业知识。当前,来自零售、媒体与娱乐、游戏、旅游乃至酒店等行业的无数客户都在使用 Amazon Personalize 为用户提供个性化的内容推荐服务。在 Amazon
Personalize 的帮助下,您可以实现一系列常见用例,包括为用户提供个性化商品推荐、显示相似商品以及根据用户喜好对商品进行重新排序等。

Amazon Personalize 能够自动使用您的用户-项目交互数据进行机器学习模型训练,并提供API以检索面向任意用户的个性化推荐结果。很多朋友都抱有这样的疑问:我们该如何将 Amazon Personalize 生成的推荐结果,与现有推荐系统进行性能比较呢?为了解答这个问题,我们将在本文中介绍如何使用 Amazon Personalize 执行 A/B 测试,这是一种用于对不同推荐策略进行有效性比较的常用技术。

大家可以在 Amazon Web Services 管理控制台上,或者通过 Amazon Personalize API 快速创建一套实时推荐系统,具体操作步骤如下:

  1. 导入您的历史用户-项目交互数据。
  2. 根据实际用例,使用 Amazon Personalize 机器学习算法(也被称为recipes)启动一项训练作业。
  3. 部署一个由 Amazon Personalize 托管的实时推荐端点(亦被称为 campaign)。
  4. 通过将事件流传递至附加在 Amazon Personalize 部署当中的 event tracker,实现对新用户-项目交互的实时记录。
下图展示了 Amazon Personalize 具体管理的各项任务。

指标概述

我们可以通过离线和在线指标对机器学习推荐系统的性能加以衡量。离线指标用于查看修改超参数与模型训练算法后的实际效果,可以根据历史数据计算得出。在线指标则是对用户与实时环境中的实时推荐进行互动时,观察到的实际效果。

Amazon Personalize 使用由历史数据中的测试数据集生成离线指标。这些指标能够展示模型如何根据历史数据生成新的推荐。下图展示了 Amazon Personalize 在训练过程中对数据进行拆分的简单示例。

我们假定使用一套包含 10 位用户的训练数据集,每位用户分别进行了 10 次交互。交互通过圆圈进行表示,并根据时间戳从最早到最新进行排序。在此示例中,Amazon Personalize 将使用 90% 的用户交互数据(蓝色圆圈)进行模型训练,另外 10% 则用于模型评估。对于评估数据子集中的用户,其交互数据中又有 90%(绿色圆圈)作为已训练模型的输入,而其余10%的数据(橙色圆圈)则与输出进行比较以验证模型推荐结果的质量。比较的结果通过评估指标进行展示。

Amazon Personalize 将生成以下指标:

  • Coverage(覆盖率) – 此项指标适合展示推荐项目覆盖到全部库存项目中的比例(百分比形式)。
  • Mean reciprocal rank at 25 (前 25 项中平均排名倒数) – 这项指标主要适合指示单一排名最高的推荐结果。
  • Normalized discounted cumulative gain at K (K 项标准化折现累计收益) – 折现累计收益是一种衡量排名质量的方法,主要关注推荐结果的顺序。
  • Precision at K (精度) – 此项指标主要用于衡量前 K 项推荐的精度,具体产生了怎样的用户宣传效果。

相关文章