首页 > 解决方案 > AWS Personalize 项目属性

问题描述

我正在尝试实现个性化并遇到项目架构问题。

想象一下我是亚马逊,我有他们的品牌和类别的产品。我应该在哪种项目架构中包含此信息?

我应该将品牌名称作为字符串作为分类字段吗?我应该将品牌 ID 包含为字符串还是数字?还是我应该两者都包括?

类别呢?我也有同样的问题。

元数据字段元数据包括不需要或不使用保留关键字的字符串或非字符串字段。元数据模式具有以下限制:

用户和项目模式至少需要一个元数据字段,

用户和交互数据集最多可以包含五个元数据字段。一个 Items 数据集最多可以包含 50 个元数据字段。

如果您添加自己的字符串类型的元数据字段,它必须包含分类属性。否则,Amazon Personalize 在训练模型时不会使用该字段。

https://docs.aws.amazon.com/personalize/latest/dg/how-it-works-dataset-schema.html

标签: amazon-web-servicesamazon-personalize

解决方案


将元数据包含在 Items/Users 数据集中的方法只有两种:

  1. 如果它可以表示为数字值,则在有意义的情况下提供实际值。
  2. 如果它可以表示为字符串,则提供字符串值并确保该分类设置为 true。

但是让我们来看看“他们为什么需要我来对我的字符串元数据进行分类?”。答案很简单。

让我们从一个例子开始。如果您将商品作为 Amazon.com 产品,并且您想提供费率元数据字段,则:

  1. 您可以获取所有费率,包括客户发送的完整评论文本,并将其简单地作为元数据字段。
  2. 您可以只取星级,计算平均值并将其作为元数据字段。

一般来说,第二个可能更有意义。将产品作为元数据进行随机、长时间的评论,几乎没有任何改变。Personalize 不了解评论本身是好是坏,或者作者是否还推荐了另一种产品,所以它几乎没有在推荐中添加任何内容。

但是,如果您只是“剪切”您的数据集并计算平均评分,就像在 2. 点中那样,那么它就更有意义了。也许我们的一些客户喜欢蹩脚的产品?也许他们想购买它们,因为他们是著名的 YouTube 主播,并且会为此制作视频?根据他们之前的互动以及更多,Personalize 将能够表现得稍微好一点,因为现在它知道该产品的评级为 5/5 或 3/5。

我想向您展示,在某些情况下,将 Items 元数据作为字符串提供是没有意义的。这就是为什么您的字符串元数据必须是分类的。这意味着,它应该是一组有限的值,因此它为 Personalize 增加了一些关于给定项目的知识,以及为什么有些人可能想要与之交互。

回到你的问题:

我应该将品牌名称作为字符串作为分类字段吗?我应该将品牌 ID 包含为字符串还是数字?还是我应该两者都包括?

我会简单地将品牌 ID 用作字符串。您也可以使用品牌名称,但可能单个品牌可以重命名,当它仍然是同一个品牌时,所以拿起ID会更稳定。此外,两个不同的品牌可能有相同的名称,因为它们出现在不同的市场上,所以拿起 ID 就可以解决这个问题。

架构中的"categorical": true开关只是告诉 Personalize:

嘿,你看到那个字符串字段了吗?它是分类的、有限的一组值。如果你为我训练一个模型,请在训练过程中包括这个,这很重要!

正如文档中所说,如果您将提供未标记为分类的字符串元数据字段,那么 Personalize 将“认为”:

嗯..这个字段是一个字符串,它有相当随机的值,它没有被标记为分类。这可能只是项目导出工作的剩余部分。让我们忽略它。


推荐阅读