为用户细分准备输入数据 - Amazon Personalize

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

为用户细分准备输入数据

批量细分作业使用解决方案版本,根据您在输入 JSON 文件中提供的数据进行用户细分。在获取用户细分之前,您必须准备好 JSON 文件并将其上传到 Amazon S3 存储桶。我们建议您在 Amazon S3 存储桶中创建输出文件夹,或者使用单独的输出 Amazon S3 存储桶。然后,您可以使用相同的输入数据位置运行多个批量推理作业。

如果您使用带有占位符参数的筛选器(如 $GENRE),则必须在输入 JSON 的 filterValues 对象中提供参数的值。有关更多信息,请参阅 在输入中提供筛选器值 JSON

准备和导入数据
  1. 根据您的解决方案使用的食谱,设置批量输入数据的格式。用新行分隔输入数据元素。您的输入数据是 itemIds 列表 (Item-Affinity) 或物品属性列表 (Item-Attribute-Affinity)。

  2. 将您的输入 JSON 上传到 Amazon S3 存储桶中的输入文件夹。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用拖放功能上传文件和文件夹

  3. 为输出数据创建一个单独的位置,可以是文件夹,也可以是其他 Amazon S3 存储桶。通过为输出 JSON 创建单独的位置,您可以使用相同的输入数据位置运行多个批量细分作业。

准备好输入数据并将其上传到 Amazon S3 存储桶后,即可使用批量细分作业生成用户细分。有关更多信息,请参阅 使用批量细分作业获取用户细分

为物品属性关联配方指定物品属性

如果您使用商品属性关联配方,则您的输入数据是物品属性列表。您可以混合不同列的元数据。例如,一行可能是数字列,下一行可能是类别列。您不能使用非结构化文本项目元数据作为项目属性。

您的输入项目元数据可以包含带有AND运算符的逻辑表达式,用于获取多个属性的用户细分。例如,一行输入数据可能是 {"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\""}{"itemAttributes": "ITEMS.genres = "\Comedy\" AND ITEMS.audience = "\teen\""}

当您将两个属性与 AND 运算符组合在一起时,您会根据用户交互历史记录创建用户细分,其中包含更有可能与同时具有这两个属性的物品进行交互的用户。与筛选器表达式(使用 IN 运算符表示字符串相等)不同,批量细分输入表达式仅支持字符串匹配的相等 = 符号。

批量细分作业输入和输出 JSON 示例

对于批量细分作业,您的输入数据必须是 itemIds 列表(Item-Affinity 食谱)或物品属性列表 (Item-Attribute-Affinity)。每行输入数据都是一个单独的推理查询。根据每个用户与您库存物品交互的概率,按降序对每个用户细分进行排序。

如果您使用带有占位符参数的筛选器(如 $GENRE),则必须在输入 JSON 的 filterValues 对象中提供参数的值。有关更多信息,请参阅 在输入中提供筛选器值 JSON

以下是按食谱组织的批量细分作业格式正确的 JSON 输入和输出示例。

Item-Affinity

Input

您的输入数据最多可有 500 个物品。用新行分隔每个 itemId,如下所示。

{"itemId": "105"} {"itemId": "106"} {"itemId": "441"} ...
Output
{"input": {"itemId": "105"}, "output": {"recommendedUsers": ["106", "107", "49"]}} {"input": {"itemId": "106"}, "output": {"recommendedUsers": ["105", "107", "49"]}} {"input": {"itemId": "441"}, "output": {"recommendedUsers": ["2", "442", "435"]}} ...

Item-Attribute-Affinity

Input

您的输入数据最多可以有 10 个查询,其中每个查询都是一个或多个非文本项目属性。用新行分隔每个属性或属性表达式,如下所示。

{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\""} {"itemAttributes": "ITEMS.genres = \"Comedy\""} {"itemAttributes": "ITEMS.genres = \"Horror\" AND ITEMS.genres = \"Action\""} ...
Output
{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\"", "output": {"recommendedUsers": ["25", "78", "108"]}} {"itemAttributes": "ITEMS.genres = \"Adventure\"", "output": {"recommendedUsers": ["87", "31", "129"]}} {"itemAttributes": "ITEMS.genres = \"Horror\" AND ITEMS.genres = \"Action\"", "output": {"recommendedUsers": ["8", "442", "435"]}} ...