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

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

为用户细分准备输入数据

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

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

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

    对于物品属性,输入数据可以包括带有 AND 运算符的逻辑表达式,用于为每个查询获取多个物品或属性的用户。有关更多信息,请参阅为物品属性关联配方指定物品属性

    有关这两种配方的输入数据示例,请参阅批量细分作业输入和输出 JSON 示例

  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"]}} ...