本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
数据格式指南
将数据导入 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 转换将值解析为类型来转换数据类型。
-
TIMESTAMP
和CREATION_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_ID
、ITEM_ID
和 TIMESTAMP
字段。USER_ID
是应用程序用户的标识符。ITEM_ID
是电影的标识符。EVENT_TYPE
和 EVENT_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
、物品 73
、70
、17
、95
和 96
,该用户最终选择了物品 73
。当您根据这些数据创建新的解决方案版本时,系统将减少向用户 USER_1
推荐物品 70
、17
、95
和 96
的频率。
设置分类数据的格式
要在使用分类字符串数据时包含单个物品的多个类别,请使用竖线“|”字符分隔值。例如,对于具有两个类别的物品,数据行将如下所示:
ITEM_ID,GENRE item_123,horror|comedy
设置数据格式后,将其上传到 Amazon S3 存储桶,以便将其导入 Amazon Personalize。有关更多信息,请参阅上传到 Amazon S3 存储桶。