为训练准备物品作交互数据 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为训练准备物品作交互数据

物品交互是用户与您目录中的物品之间的积极交互事件。例如,用户在看电影、查看商品列表或购买一双鞋。您可以将有关用户与您的物品交互的数据导入到物品交互数据集中。您可以记录多种事件类型,例如点击观看购买

例如,如果用户单击 某件物品,然后点赞 了该物品,则可以让 Amazon Personalize 使用这些事件作为训练数据。对于每个事件,您将记录用户的 ID、物品的 ID、时间戳(采用 Unix 时间纪元格式)和事件类型(单击点赞)。然后,您可以将这两个物品交互事件添加到物品交互数据集中。

对于所有域名用例和自定义配方,您的批量项目交互数据必须位于CSV文件中。每一行都应代表用户和物品之间的单次交互。准备完数据后,就可以创建架构JSON文件了。此文件向 Amazon Personalize 提供关于数据结构的信息。有关更多信息,请参阅 为 Amazon Personalize 架构创建架构 JSON 文件

以下各部分提供了有关如何为 Amazon Personalize 准备物品交互数据的更多信息。有关所有数据类型的批量数据格式准则,请参阅批量数据格式准则

物品交互数据要求

以下各节列出了 Amazon Personalize 的物品交互数据要求。有关其他配额,请参阅Amazon Personalize 端点和限额

最低训练要求

对于所有域应用场景和自定义配方,您的批量物品交互数据必须具有以下内容:

  • 至少 1000 条来自用户与您目录中的物品进行交互的物品交互记录。这些交互可以来自批量导入,也可以来自流事件,或者两者兼而有之。

  • 至少 25 个独立用户IDs,每个用户至少有两次物品互动。

为获得高质量的建议,我们建议您至少有 1000 名用户的最少 5 万次物品交互,每位用户有两次或更多次物品交互。

要创建推荐器或自定义解决方案,您必须至少创建一个物品交互数据集

列要求

物品交互数据必须包含以下几列。

  • USER_ID — 与项目交互的用户的唯一标识符。每个事件都必须有一个 USER _ID。它必须是 string,最大长度为 256 个字符。

  • ITEM_ID — 用户与之交互的项目的唯一标识符。每个事件都必须有一个物品 ID。它必须是 string,最大长度为 256 个字符。

  • TIMESTAMP— 事件发生的时间(采用 Unix 纪元时间格式,以秒为单位)。每次互动都必须有TIMESTAMP. 有关更多信息,请参阅 时间戳数据

  • EVENT_ TYPE — 物品互动事件的性质,例如点击观看购买。对于域推荐器,必须有一个事件类型列,并且每个交互都必须有事件类型。对于所有自定义配方,建议使用 EVENT _ TYPE 列,但这是可选的。如果添加了该列,则每个事件都必须有事件类型。有关更多信息,请参阅事件类型和事件值数据

您可以根据应用场景和数据自由地添加其他自定义列。最大可选元数据列数为 5。这些列可以包括空值。我们建议这些列的完成度至少为 70%。

时间戳数据

时间戳数据必须采用 Unix 纪元时间格式,以秒为单位。例如,日期为 2020 年 7 月 31 日的纪元时间戳(以秒为单位)为 1596238243。要将日期转换为 Unix 纪元时间戳,请使用纪元转换器 - Unix 时间戳转换器

Amazon Personalize 使用时间戳数据来计算时效性,并识别任何基于时间的模式。它可以帮助 Amazon Personalize up-to-date 根据用户不断变化的偏好保留推荐。

事件类型和事件值数据

物品交互数据集可以存储每个交互的事件类型和事件值数据。只有自定义资源才使用事件值数据。

事件类型数据

物品交互的事件类型提供了有关其性质和意义的上下文信息。事件类型示例可能是点击观看购买。Amazon Personalize 使用事件类型数据(例如点击购买数据)来识别用户的意图和兴趣。在物品交互数据集中,不同事件类型的最大数目加上可选元数据列的总数不能超过 10。

对于域推荐器,必须有一个事件类型列,并且每个交互都必须有事件类型。对于所有自定义配方,建议使用 EVENT _ TYPE 列,但这是可选的。如果添加了该列,则每个事件都必须有事件类型。

如果创建了自定义资源,则可以按事件类型选择用于训练的事件。如果您的数据集在 EVENT _ TYPE 列中有多个事件类型,并且您在配置自定义解决方案时未提供事件类型,则 Amazon Personalize 会使用所有项目交互数据进行训练,无论其类型如何。有关更多信息,请参阅 选择用于训练的物品交互数据

以下应用场景具有特定的事件类型要求:

VIDEO_ON_ DEMAND 域名用例

  • “因为您观看过 X”至少需要 1000 个 Watch 事件。

  • “最受欢迎”至少需要 1000 个 Watch 事件。

ECOMMERCE域名用例

  • “最常查看”至少需要 1000 个 View 事件。

  • “最畅销”至少需要 1000 个 Purchase 事件。

正向和负向事件类型

Amazon Personalize 假设任何交互都是正向的。与负向事件类型(例如不喜欢)的交互不一定会阻止物品出现在用户未来的推荐中。

以下是让负向事件和用户不感兴趣内容来影响推荐的方法:

  • 对于所有域应用场景和 User-Personalization 配方,Amazon Personalize 都可以使用展示数据。当某个物品出现在展示数据中而用户没有选择它时,该物品不太可能出现在推荐中。有关更多信息,请参阅 展示数据

  • 如果您使用自定义资源并导入正向和负向事件类型,则只能对正向事件类型进行训练,然后筛选出用户与之进行负向交互的物品。有关更多信息,请参阅选择用于训练的物品交互数据筛选建议和用户细分

事件值数据(自定义资源)

事件值数据可能是用户观看过的影片的进度百分比或用户给出的评分(满分 10 分)。如果您创建自定义解决方案,则可以根据 EVENT _ TYPE 和 EVENT _ VALUE 列中的数据选择用于训练的记录。对于域推荐器,Amazon Personalize 不使用事件值数据,您也无法在训练前筛选事件。

要根据类型和值选择记录,请记录事件的事件类型和事件值数据。并非所有事件都必须有事件值。您为每个事件选择的值取决于您要排除的数据以及要记录的事件类型。例如,您可以匹配用户活动,例如观看 事件类型的用户观看视频的百分比。

配置解决方案时,可以将特定值设置为从训练中排除记录的阈值。例如,如果您的 EVENT _ 观看次数为 EVENT _ 的事件VALUE的数据是用户观看TYPE的视频的百分比,如果您将事件值阈值设置为 0.5,并将要观看的事件类型设置为 0.5,则 Amazon Personalize 仅使用 EVENT _ VALUE 大于或等于 0.5 的观看互动事件来训练模型。

有关更多信息,请参阅 选择用于训练的物品交互数据

上下文元数据

对于某些食谱和推荐器使用案例,Amazon Personalize 可以在识别底层模式时使用上下文元数据,为用户显示最相关的物品。上下文元数据是您在事件发生时在用户环境中收集的交互数据,例如其位置或设备类型。在为用户获取建议时,您也可以指定用户的上下文。

包括上下文元数据,为您的用户提供更加个性化的体验,并缩短新用户的冷启动阶段。冷启动阶段是由于缺乏历史用户数据而导致推荐的相关性较低的阶段。

例如,如果您的商品互动CSV文件包含带有tabletphone值的 DEVICE _ TYPE 列,则 Amazon Personalize 可以了解买家在不同设备上购物的方式有何不同。在为用户获取建议时,您可以指定他们的设备,这样即使用户没有交互历史记录,建议也更具相关性。

以下内容显示了如何将带有 DEVICE _ TYPE 列的项目交互CSV文件格式化为上下文元数据。

ITEM_ID,USER_ID,TIMESTAMP,DEVICE_TYPE,EVENT_TYPE shoe12345,12,1428624000,Tablet,CLICK shoe12346,12,1420416000,Tablet,CLICK shoe12347,12,1410652800,Tablet,BUY shoe4444,13,1409961600,Phone,CLICK shoe4445,13,1402876800,Phone,BUY shoe4336,13,1402185600,Phone,CLICK .....

对于域数据集组,以下推荐器使用案例可以使用上下文元数据:

对于自定义资源,使用上下文元数据的食谱包括以下内容:

要了解如何在获取建议时包含上下文信息,请参阅利用上下文元数据提高建议的相关性。有关展示如何使用上下文元数据的端到端示例,请参阅以下 M Amazon achine Learning 博客文章:利用情境信息提高 Amazon Personalize 推荐的相关性

展示数据

展示是用户与特定物品交互(例如,单击或观看)时可见的物品列表。如果您使用提供个性化或 User-Personalization 配方的域应用场景,Amazon Personalize 可以使用展示数据来指导浏览。

在浏览中,建议包括一些通常不太可能向用户建议的物品或操作,例如新物品或操作、交互量很少的物品或操作,或者根据用户以前的行为与用户不太相关的物品或操作。物品在展示数据中出现的频率越高,Amazon Personalize 将该物品包含在浏览中的可能性就越小。

在创建推荐器或解决方案时,Amazon Personalize 始终会从训练中排除展示数据。这是因为 Amazon Personalize 不会使用展示数据训练模型。相反,在获取建议时,它会使用展示数据来指导用户浏览。

展示值最多可以包含 1000 个字符(包括竖线字符)。对于域数据集组,以下推荐器应用场景可以使用展示数据:

有关浏览的更多信息,请参阅探索。Amazon Personalize 可以对两种类型的展示进行建模:隐式展示显式展示

显式展示

显式展示 是您手动记录并发送到 Amazon Personalize 的展示。使用显式展示来操作 Amazon Personalize 的结果。物品的顺序没有影响。

例如,您可能有一个购物应用程序用于提供有关鞋的建议。如果您只推荐目前有库存的鞋,则可以使用显式展示来指定这些物品。使用显式展示的建议工作流程可能如下所示:

  1. 您可以使用 Amazon Personalize 为其中一位用户请求推荐GetRecommendationsAPI。

  2. Amazon Personalize 会为使用您的模型(解决方案版本)的用户生成推荐,并在回API复中将其返回。

  3. 您只向用户显示有库存的推荐的鞋。

  4. 为了实时导入增量数据,当您的用户与一双鞋互动(例如,点击)时,您可以在调用时记录选择,PutEventsAPI并在impression参数中列出库存中的推荐商品。有关代码示例,请参阅记录包含展示数据的物品交互事件

    要在历史物品交互数据中导入展示,您可以在 csv 文件中列出显式展示,并通过“|”字符分隔每个物品。竖线字符计入 1000 个字符的限制。有关示例,请参阅设置显式展示的格式

  5. Amazon Personalize 使用展示数据来指导浏览,即未来的建议包括交互数据较少或相关性较低的新鞋。

设置显式展示的格式

要在CSV文件中包含明确的展示次数,请添加一IMPRESSION列。对于每个项目交互,添加用竖线 “|” itemIds 分隔的列表,字符。竖线字符计入展示数据 1000 个字符的限制。如果您在 PutEvents 操作中包括显式展示,则可以在字符串数组中指定物品。

以下是一个文件的简短摘录,该CSV文件在该IMPRESSION列中包含明确的印象。

EVENT_TYPE IMPRESSION ITEM_ID TIMESTAMP USER_ID
点击

73|70|17|95|96

73

1586731606

USER_1
单击

35|82|78|57|20|63|1|90|76|75|49|71|26|24|25|6

35

1586735164

USER_2
... ... ... ... ...

应用程序显示了用户 USER_1、物品 7370179596,该用户最终选择了物品 73。当您根据这些数据创建新的解决方案版本时,系统将减少向用户 USER_1 推荐物品 70179596 的频率。

隐式展示

隐式展示 是指您向用户显示且从 Amazon Personalize 中检索的建议。您的CSV文件无需包含IMPRESSION或 RECOMMENDATION _ID 列即可使用隐式展示次数。相反,您可以在 PutEvents 请求中包括 RecommendationId(由 GetRecommendationsGetPersonalizedRanking 操作返回)。Amazon Personalize 会根据您的建议数据得出隐式展示。

例如,您可能有一个应用程序用于提供流视频的建议。使用隐式展示的建议工作流程可能如下所示:

  1. 您可以使用 Amazon Personalize GetRecommendations API 操作为其中一位用户请求视频推荐。

  2. Amazon Personalize 会为使用您的模型(解决方案版本)的用户生成推荐,并在回API复recommendationId中返回这些推荐。

  3. 您在应用程序中向用户显示视频建议。

  4. 当您的用户与视频互动(例如,点击)时,请在对的调用中记录所做的选择,PutEventsAPI并将recommendationId作为参数包括在内。有关代码示例,请参阅记录包含展示数据的物品交互事件

  5. Amazon Personalize 使用 recommendationId 从之前的视频建议中获取展示数据,然后使用展示数据来指导浏览,即未来的建议包括交互数据较少或相关性较低的新视频。

    有关使用隐式展示数据记录事件的更多信息,请参阅记录包含展示数据的物品交互事件

交互数据示例

以下交互数据表示流视频网站上的历史用户活动。您可以使用这些数据来训练模型,以根据用户的交互数据提供电影建议。请注意,EVENT_ 的某些值VALUE为空。

USER_ID,ITEM_ID,EVENT_TYPE,EVENT_VALUE,TIMESTAMP 196,242,watch,.50,881250949 186,302,watch,.75,891717742 22,377,click,,878887116 244,51,click,,880606923 166,346,watch,.50,886397596 298,474,watch,.25,884182806 115,265,click,,881171488 253,465,watch,.50,891628467 305,451,watch,.75,886324817

Amazon Personalize 需要 USER_IDITEM_IDTIMESTAMP 列。USER_ID 是应用程序用户的标识符。ITEM_ID 是影片的标识符。EVENT_TYPEEVENT_VALUE 是用户交互的标识符。在示例数据中,事件是 watchclick 事件,值是用户观看过的视频的进度百分比。TIMESTAMP 表示购买影片时的 Unix 纪元时间。

准备完数据后,就可以创建架构JSON文件了。此文件向 Amazon Personalize 提供关于数据结构的信息。有关更多信息,请参阅 为 Amazon Personalize 架构创建架构 JSON 文件。这就是样本数据的架构JSON文件的样子。

{ "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "EVENT_VALUE", "type": "float" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }