本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为训练准备用户元数据
您可以导入 Amazon Personalize 的用户数据包括数值数据(例如,用户年龄)和分类元数据(例如性别或会员资格)。您可以将有关用户的元数据导入到 Amazon Personalize 用户数据集。
根据您的域应用场景或自定义配方,用户元数据有助于 Amazon Personalize 向用户推荐更多相关的物品,或者推荐更有意义的用户细分。训练之后,用户元数据有助于您的模型在没有任何交互数据的情况下向用户推荐物品。有关哪些应用场景或配方使用用户元数据的更多信息,请参阅将自己的应用场景与 Amazon Personalize 资源进行匹配中域应用场景或配方的数据要求。
在训练时,Amazon Personalize 不使用非分类字符串用户数据,例如用户的名称、有关用户的关键词或标签。但是,导入这些数据仍然可以增强推荐效果。有关更多信息,请参阅 非分类字符串数据。
对于所有域应用场景和自定义配方,批量用户数据必须在 CSV 文件中。文件中的每一行都应代表一个唯一用户。完成数据准备后,就可以创建架构 JSON 文件。此文件向 Amazon Personalize 提供关于数据结构的信息。有关更多信息,请参阅 为 Amazon Personalize 架构创建架构 JSON 文件。
以下各部分提供了有关如何为 Amazon Personalize 准备用户数据的更多信息。有关所有数据类型的批量数据格式准则,请参阅批量数据格式准则
用户数据要求
以下是 Amazon Personalize 的用户数据要求。您可以根据应用场景和数据自由地添加其他自定义列。
-
您的数据必须有一个 USER_ID 列,用于存储每个用户的唯一标识符。每个用户都必须有一个用户 ID。它必须是
string
,最大长度为 256 个字符。 -
您的数据必须至少包含一个分类字符串或数字元数据列。对于某些用户,用户元数据列可以包括空值。我们建议这些列的完成度至少为 70%。
-
最大元数据列数为 25。
如果您不确定自己是否有足够的数据或对数据质量存有疑问,则可以将您的数据导入 Amazon Personalize 数据集,然后使用 Amazon Personalize 对其进行分析。有关更多信息,请参阅 分析 Amazon Personalize 数据集中的数据质量和数量。
分类元数据
对于一些配方以及所有域应用场景,Amazon Personalize 在识别底层模式时使用分类元数据(例如用户的性别、兴趣或会员状态),向用户显示最相关的物品。您可以基于自己的使用案例来定义自己的值范围。分类元数据可以是任何语言。
对于具有多个类别的用户,使用竖线“|”分隔每个值。例如,对于 INTERESTS 字段,您的用户数据可能是 Movies|TV Shows|Music
。
对于所有食谱和域,您可以导入分类元数据,并使用此类数据,根据用户的属性筛选建议。有关筛选建议的信息,请参阅筛选建议和用户细分。
分类值最多可以有 1000 个字符。如果您的用户的分类值超过 1000 个字符,则您的数据集导入作业将失败。
非分类字符串数据
在训练时,Amazon Personalize 不使用除用户 ID 之外的非分类字符串用户数据,例如用户的名称、有关用户的关键词或标签。但是,Amazon Personalize 可以在筛选推荐时使用该数据。您可以创建筛选条件,以便根据您正在为其获取建议的用户(CurrentUser)的非分类字符串数据,在推荐中包括或删除物品。有关筛选条件的更多信息,请参阅筛选建议和用户细分。非分类值最多可以有 1000 个字符。
用户元数据示例
CSV 文件中的前几行用户元数据看起来可能像下面这样。
USER_ID,AGE,GENDER,INTEREST 5,34,Male,hiking 6,56,Female,music 8,65,Male,movies|TV shows|music ... ...
USER_ID
列为必填列,用于存储每个用户的唯一标识符。AGE
列是数字元数据。GENDER
和 INTEREST
列存储每个用户的分类元数据。
完成数据准备后,就可以创建架构 JSON 文件。此文件向 Amazon Personalize 提供关于数据结构的信息。有关更多信息,请参阅 为 Amazon Personalize 架构创建架构 JSON 文件。上述示例数据的架构 JSON 文件看起来就是这个样子。
{ "type": "record", "name": "Users", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "AGE", "type": "int" }, { "name": "GENDER", "type": "string", "categorical": true }, { "name": "INTEREST", "type": "string", "categorical": true } ], "version": "1.0" }