为训练准备项目元数据 - Amazon Personalize

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

为训练准备项目元数据

项目元数据包括与您的用户互动的项目相关的数字和分类数据。物品元数据的示例包括创建时间戳、价格、类型、描述和供货情况。您可以将有关物品的元数据导入到 Amazon Personalize 物品数据集

根据您的域名用例或自定义配方,商品元数据可以帮助 Amazon Personalize 向用户推荐更多相关的商品,更准确地预测相似的项目,或者推荐更有意义的用户群体。它还可以帮助 Amazon Personalize 在推荐中推出新商品。某些域用例需要项目元数据,对于所有自定义配方,项目元数据是可选的。有关更多信息,请参阅中的域名用例或配方的数据要求将您的用例与 Amazon Personalize 资源进行匹配

训练时,Amazon Personalize 不使用非分类字符串项目数据,例如项目标题或作者数据。但是,导入这些数据仍然可以增强推荐效果。有关更多信息,请参阅 非分类字符串数据

Amazon Personalize 在培训期间考虑的最大商品数量取决于您的用例或食谱。只有在培训期间考虑的项目才能出现在推荐中。

  • 对于用户个性化-v2 或个性化排名-v2,模型在训练期间考虑的最大项目数为 500 万。这些项目既来自项目交互数据集,也来自项目交互数据集。

  • 对于除用户个性化-v2 和 personalized-ranking-v2 之外的所有域用例和自定义配方,模型在训练和生成推荐期间考虑的最大项目数为 750,000 个。

对于所有域名用例和自定义配方,您的批量商品数据必须位于CSV文件中。文件中的每一行都应代表一个唯一的项目。准备完数据后,就可以创建架构JSON文件了。此文件告知 Amazon Personalize 您的数据结构。有关更多信息,请参阅 为 Amazon Personalize 架构创建架构JSON文件

以下各节提供了有关如何为 Amazon Personalize 准备商品元数据的更多信息。有关所有类型数据的批量数据格式指南,请参阅批量数据格式指南

商品数据要求

以下是 Amazon Personalize 的商品元数据要求。

如果您不确定自己是否有足够的数据或对其质量有疑问,可以将您的数据导入亚马逊个性化数据集,然后使用亚马逊个性化对其进行分析。有关更多信息,请参阅 分析 Amazon Personalize 数据集中数据的质量和数量

  • 对于所有域名用例和自定义配方,您必须有一个 ITEM _ID 列来存储每件商品的唯一标识符。每件商品都必须有一个商品编号。它必须是string最大长度为 256 个字符的。

  • 对于自定义配方,您的数据必须至少包含一个类别字符串或数字元数据列。项目元数据列可以包含空值/空值。我们建议这些列的完整度至少为 70%。

  • 对于域名用例,所需的列取决于您的域名。有关更多信息,请参阅VIDEO_ON_ 域名要求 DEMANDECOMMERCE域名要求

  • 最大元数据列数为 100。

VIDEO_ON_ 域名要求 DEMAND

某些用例需要项目元数据(请参阅VIDEO_ON_DEMAND 使用案例)。如果可选,我们仍建议您导入项目元数据以获取最相关的推荐。如果您导入项目元数据,则您的数据必须包含以下列:

  • ITEM_ID

  • GENRES(绝对的string

  • CREATION_TIMESTAMP(采用 Unix 纪元时间格式)

以下列出了其他推荐列及其所需类型。该null类型表示该列可能有缺失值。我们建议这些列的完整度至少为 70%。加入这些列可以改善建议。

  • PRICE(浮动)

  • DURATION(浮动)

  • GENRE_L2(分类string,)null

  • GENRE_L3(分类string,)null

  • AVERAGE_RATING (float, null)

  • PRODUCT_DESCRIPTION(文本stringnull

  • CONTENT_OWNER(分类stringnull)— 拥有视频的公司。例如,值可能是 HBO Paramount 和NBC。

  • CONTENT_CLASSIFICATION(分类stringnull)— 内容的评级。例如,值可能是 G、PG、PG-13、R、NC-17 和未分级。

ECOMMERCE域名要求

项目元数据对于所有ECOMMERCE用例都是可选的。如果您有商品数据,我们建议您将其导入以获得最相关的推荐。如果您导入项目元数据,则您的数据必须包含以下列:

  • ITEM_ID

  • PRICE (float)

  • CATEGORY_L1(分类string)-有关格式化分类数据的信息,请参阅。分类元数据

以下列出了其他推荐列及其所需类型。该null类型表示该列可能有缺失值。我们建议这些列的完整度至少为 70%。加入这些列可以改善建议。

  • CATEGORY_L2(分类string,)null

  • CATEGORY_L3(分类string,)null

  • PRODUCT_DESCRIPTION(文本stringnull

  • CREATION_TIMESTAMP (float)

  • AGE_GROUP(分类stringnull)— 商品所针对的年龄组。值可能是新生儿、婴儿、儿童和成人。

  • ADULT(分类stringnull)— 商品是否仅限于成人,例如酒精。值可能为是或否。

  • GENDER(分类stringnull)— 商品的性别。值可以是男性、女性和男女皆宜。

创建时间戳数据

创建时间戳数据必须采用 Unix 纪元时间格式,以秒为单位。例如,日期为 2020 年 7 月 31 日的纪元时间戳(以秒为单位)为 1596238243。要将日期转换为 Unix 纪元时间戳,请使用 E poch 转换器-Unix 时间戳转换器

Amazon Personalize 使用创建时间戳数据(采用 Unix 纪元时间格式,以秒为单位),计算物品的使用年限并相应地调整建议。

如果缺少一件或多件物品的创建时间戳数据,则 Amazon Personalize 会从交互数据(如果有)中推断出此信息,并使用物品最早交互数据的时间戳作为物品的创建时间戳。如果某个物品没有交互数据,则其创建时间戳将设置为训练集中最新交互的时间戳,且 Amazon Personalize 会将其视为新物品。

分类元数据

对于某些配方和所有域名用例,Amazon Personalize 使用分类元数据(例如商品的类型或颜色)来识别与用户最相关的商品的底层模式。您可以基于自己的使用案例来定义自己的值范围。分类元数据可以是任何语言。

对于具有多个类别的物品,使用竖线“|”分隔每个值。例如,对于字GENRES段,您的项目数据可能是Action|Crime|Biopic。如果您有多个级别的类别数据,并且某些项目在层次结构中的每个级别都有多个类别,请为每个级别使用单独的列,并在每个字段名称后面附加一个级别指示符:GENRES、GENRE _L2、_L3。GENRE这允许您根据子类别筛选推荐,即使一个项目属于多个多级类别(有关创建和使用筛选器的信息,请参阅筛选建议和用户细分)。例如,某个视频可能包含每个类别级别的以下数据:

  • GENRES: 动作|冒险

  • GENRE_L2:Crime|Western

  • GENRE_L3:传记片

在此示例中,该视频位于动作 > 犯罪 > 传记片层次结构 冒险 > 西方 > 传记片层次结构中。我们建议使用的级别最高仅到 L3,但如有必要,可以使用更多级别。

分类值最多可以有 1000 个字符。如果您的物品的分类值超过 1000 个字符,则您的数据集导入作业将失败。我们建议分类列最多包含 1000 个可能的值。导入具有更多值的分类数据可能会对推荐产生负面影响。以下内容可以帮助您减少类别列的可能值的数量:

  • 确保值遵循一致的命名惯例并检查是否有错别字。例如,使用 “男鞋”,而不是混合 “男鞋”、“男鞋” 和 “男鞋”。

  • 合并使用略有不同的术语来指代相同基础类别的相似类别,例如 “鞋子” 和 “运动鞋”。

  • 如果您的数据采用分层结构,其中更广泛的类别(例如 “鞋类”)包含更具体的子类别(例如 “男鞋”、“女鞋”、“童鞋”),请为每个级别使用单独的列,并在每个字段名称后面附加一个级别指示器。例如,CATEGORY_1、_ CATEGORY 2 和 CATEGORY _3。这可以减少模棱两可或重叠的类别。

对于所有食谱和域,您可以导入分类数据,并使用此类数据,根据物品的属性筛选建议。有关筛选建议的信息,请参阅筛选建议和用户细分

非结构化文本元数据

对于某些食谱和域,Amazon Personalize 可以从非结构化文本元数据(例如产品描述、产品评论或电影提要)中提取有意义的信息。Amazon Personalize 使用非结构化文本为您的用户识别相关物品,尤其是在物品是新物品或交互数据较少的情况下。您最多可添加 1 个文本字段。在物品数据集中包含非结构化文本数据,可以提高目录中新物品的点击率和对话率。

在准备非结构化文本元数据时,请将文本用双引号括起来,并删除所有换行符。使用 \ 字符,对数据中的任何双引号或 \ 字符进行转义处理。Amazon Personalize 会按字符限制截断文本字段。确保文本中最相关的信息位于字段的开头。

除中文和日语外,所有语言的非结构化文本值最多可以包含 2 万个字符。对于中文和日语,最多可以包含 7 千个字符。Amazon Personalize 会将超过字符限制的值截断,使其符合字符限制。

您可以采用多种语言提交非结构化文本物品,但每个物品的文本只能使用一种语言。文本可使用以下语言:

  • 中文(简体)

  • 中文(繁体)

  • English

  • 法语

  • 德语

  • 日语

  • 葡萄牙语

  • 西班牙语

数值数据

Amazon Personalize 可以使用商品的数字元数据,例如价格或视频时长,为用户生成更相关的推荐。此数值数据可以表示为整数或十进制值。

如果您使用User-PersonalizationPersonalized-Ranking自定义配方,则除了最大限度地提高相关性(例如最大限度地提高收入)之外,还可以针对商品元数据相关目标优化 Amazon Personalize 解决方案。配置解决方案时,您可以在项目数据集中选择与您的目标相关的数字元数据列。例如,你可以选择一个 VIDEO _ LENGTH 列来最大限度地提高直播时间,或者选择一PRICE列来最大限度地提高收入。

有关更多信息,请参阅 针对其他目标优化解决方案

非分类字符串数据

除商品外IDs,Amazon Personalize 在训练时不使用非分类的非文本字符串数据,例如项目标题或作者数据。但是,Amazon Personalize 可以将其与以下功能一起使用。非分类值最多可包含 1000 个字符。

  • Amazon Personalize 可以在建议中包含物品元数据,包括非分类字符串值。您可以使用元数据来丰富用户界面中的建议,例如将导演的姓名添加到电影建议轮播中。有关更多信息,请参阅 推荐中的商品元数据

  • 如果您使用Similar-Items,则可以生成带有主题的批量建议。生成带有主题的批量建议时,必须在批量推理作业中指定物品名称列。有关更多信息,请参阅 内容生成器中带有主题的批量建议

  • 您可以创建筛选条件,以根据非分类字符串数据在建议中包含或删除物品。有关筛选条件的更多信息,请参阅筛选建议和用户细分

项目元数据示例

CSV文件中电影元数据的前几行可能如下所示。

ITEM_ID,GENRES,CREATION_TIMESTAMP,DESCRIPTION 1,Adventure|Animation|Children|Comedy|Fantasy,1570003267,"This is an animated movie that features action, comedy, and fantasy. Audience is children. This movie was released in 2004." 2,Adventure|Children|Fantasy,1571730101,"This is an adventure movie with elements of fantasy. Audience is children. This movie was release in 2010." 3,Comedy|Romance,1560515629,"This is a romantic comedy. The movie was released in 1999. Audience is young women." 4,Comedy|Drama|Romance,1581670067,"This movie includes elements of both comedy and drama as well as romance. This movie was released in 2020." ... ...

ITEM_ID列为必填列,用于存储每件商品的唯一标识符。该GENRE列存储每部电影的分类元数据,该DESCRIPTION列是非结构化文本元数据。该CREATION_TIMESTAMP列以 Unix 纪元时间格式存储每个项目的创建时间(以秒为单位)。

准备完数据后,就可以创建架构JSON文件了。此文件告知 Amazon Personalize 您的数据结构。有关更多信息,请参阅 为 Amazon Personalize 架构创建架构JSON文件。以上示例数据的架构JSON文件如下所示。

{ "type": "record", "name": "Items", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "ITEM_ID", "type": "string" }, { "name": "GENRES", "type": [ "null", "string" ], "categorical": true }, { "name": "CREATION_TIMESTAMP", "type": "long" }, { "name": "DESCRIPTION", "type": [ "null", "string" ], "textual": true } ], "version": "1.0" }