数据格式指南 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

数据格式指南

将数据导入 Amazon Personalize 数据集时,您可以选择批量、单独导入记录(或两者兼而有之)。

  • 批量导入涉及一次性导入大量历史记录。您可以使用 SageMaker Data Wrangler 与多个数据源准备和导入批量数据。或者,您可以自己准备批量数据,然后将其从 Amazon S3 中的 CSV 文件直接导入 Amazon Personalize。

  • 对于个人导入,您可以通过 Amazon Personalize 控制台和 API 操作导入个人记录。或者,您可以实时流式传输来自实时事件的交互数据。有关单个导入的更多信息,请参阅导入单个记录

在导入批量数据之前,请确保其格式正确。以下部分可帮助您设置批量数据格式。如果您不确定如何设置数据格式,可以使用 Amazon SageMaker Data Wrangler (Data Wrangler) 来准备数据。有关更多信息,请参阅使用 Amazon SageMaker Data Wrangler 准备和导入数据

批量数据格式指南和要求

以下指南和要求有助于确保批量数据格式正确。

  • 您的输入数据必须在 CSV(逗号分隔值)文件中。

  • CSV 文件的第一行必须包含列标题。不要将标题括在引号 (") 中。

  • 确保您的数据集类型有必填字段,并确保其名称符合 Amazon Personalize 要求。例如,您的物品数据可能有一个名为 ITEM_IDENTIFICATION_NUMBER 的列,其中包含每件物品的 ID。要将此列用作 ITEM_ID 字段,请将该列重命名为 ITEM_ID。如果您使用 Data Wrangler 来设置数据格式,则可以使用为 Amazon Personalize 映射列 Data Wrangler 转换,来确保您的列命名正确。

    有关必填字段的信息,请参阅架构。有关使用 Data Wrangler 准备数据的信息,请参阅使用 Amazon SageMaker Data Wrangler 准备和导入数据

  • CSV 文件中的列标题名称必须映射到您的架构。

  • CSV 文件中的每条记录必须都在单行中。

  • 每列中的数据类型必须映射到您的架构。如果您使用 Data Wrangler 设置数据格式,则可以使用 Data Wrangler 转换将值解析为类型来转换数据类型。

  • TIMESTAMPCREATION_TIMESTAMP 数据必须采用 UNIX 纪元 时间格式。有关更多信息,请参阅时间戳数据

  • 如果您的数据包含任何非 ASCII 编码字符,则必须采用 UTF-8 格式编码 CSV 文件。

  • 确保按照非结构化文本元数据中所述设置所有文本数据的格式。

  • 务必按照设置显式展示的格式设置分类数据的格式中所述设置展示数据和分类数据的格式。

交互数据示例

以下交互数据表示销售电影票的网站上的历史用户活动。您可以使用这些数据来训练模型,以根据用户的交互数据提供电影建议。

USER_ID,ITEM_ID,EVENT_TYPE,EVENT_VALUE,TIMESTAMP 196,242,click,15,881250949 186,302,click,13,891717742 22,377,click,10,878887116 244,51,click,20,880606923 166,346,click,10,886397596 298,474,click,40,884182806 115,265,click,20,881171488 253,465,click,50,891628467 305,451,click,30,886324817

以下是相关的交互架构:

{ "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" }

Amazon Personalize 需要 USER_IDITEM_IDTIMESTAMP 字段。USER_ID 是应用程序用户的标识符。ITEM_ID 是电影的标识符。EVENT_TYPEEVENT_VALUE 是用户活动的标识符。在示例数据中,click 可能表示电影购买事件,15 可能表示电影的购买价格。TIMESTAMP 表示购买电影的 Unix 纪元时间。

时间戳数据

时间戳数据 [例如 TIMESTAMP(针对物品交互数据集)或 CREATION_TIMESTAMP(对于物品数据集)数据] 必须采用 Unix 纪元时间格式(以秒为单位)。例如,日期为 2020 年 7 月 31 日的纪元时间戳(以秒为单位)为 1596238243。要将日期转换为 Unix 纪元时间戳,请使用纪元转换器 - Unix 时间戳转换器

设置显式展示的格式

如果您使用 User-Personalization 配方,则可以记录和上传展示数据。展示是用户与特定物品交互(例如,单击或观看)时可见的物品列表。要在批量数据导入中上传展示数据,请手动记录每个物品 ID。作为历史交互数据的一部分,请务必使用竖线“|”字符分隔这些值。竖线字符计入展示数据 1000 个字符的限制。有关展示数据的更多信息,请参阅展示数据

以下是物品交互数据集的简短摘录,该数据集包含 IMPRESSION 列中的显式展示。

EVENT_TYPE 展示 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 的频率。

设置分类数据的格式

要在使用分类字符串数据时包含单个物品的多个类别,请使用竖线“|”字符分隔值。例如,对于具有两个类别的物品,数据行将如下所示:

ITEM_ID,GENRE item_123,horror|comedy

设置数据格式后,将其上传到 Amazon S3 存储桶,以便将其导入 Amazon Personalize。有关更多信息,请参阅上传到 Amazon S3 存储桶