筛选条件表达式 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

筛选条件表达式

要配置筛选器,您必须使用格式正确筛选条件表达式. 筛选器表达式由中的数据集和属性标识符组成dataset.property格式以及逻辑运算符、关键字和值。对于值,您可以指定固定值或添加占位符参数,在获得推荐时设置筛选条件。

有关筛选条件表达式元素的完整列表,请参阅筛选表达式元素. 有关筛选条件表达式,请参阅。筛选表达式示例.

注意

Amazon Personalize 化仅在匹配事件类型时才忽略大小写。

创建筛选表达式

过滤器表达式的一般结构如下:

EXCLUDE/INCLUDE ItemID/UserID WHERE dataset type.property IN/NOT IN (value/parameter)

您可以手动创建过滤器表达式,也可以通过使用构建表达式在控制台中。您可以使用筛选表达式根据以下数据集中的数据筛选项目或用户:

  • 交互:使用筛选表达式可以在推荐中包括或排除用户与之交互的项目(例如点击或直播等用户事件)。或者从用户细分中包括或排除已采取某些操作的用户(与某些事件类型的互动)。不能与一起使用交互筛选器物品属性-亲和力食谱.

    Amazon Personalize 化会考虑一个用户最多 200 次历史互动,以及使用 PutEvents 操作记录的用户最多 100 次流式互动。此外,历史互动Amazon Personalize 化考虑用户取决于max_user_history_length_percentilemin_user_history_length_percentile您在训练前定义的超参数。

    例如,如果您使用.99(对于 )max_user_history_length_percentile,并且 99% 的用户最多拥有4互动,Amazon Personalize 化只会根据用户的最新情况进行筛选4历史互动。如果用户的历史互动次数少于min_user_history_length_percentile,Amazon Personalize 化在筛选时不考虑用户的互动。

    要根据用户的最多 200 次历史交互进行筛选,请将max_user_history_length_percentile1.0然后重新训练模型。有关超参数的更多信息,请参阅。第 1 步:选择配方然后导航到属性和超级参数你的食谱部分。

  • 项目:使用筛选表达式根据特定的项目条件包括或排除项目。您不能使用筛选器来包含或排除基于非结构化文本项目元数据(如产品描述)的项目。

  • 用户

    • 适用于针对用户的物品推荐中,使用过滤器表达式包含或排除项目来自基于您获得建议的用户属性的推荐(CurrentUser)。

      如果您有用户数据集,则可以添加IF条件给你的表达式来检查CurrentUser无论表达式中使用的数据集如何。

    • 适用于用户细分中,使用过滤器表达式包含或排除用户来自基于用户属性的用户细分。

在创建筛选条件表达式时,请注意以下限制:

  • 您不能使用筛选器来包含或排除基于非结构化文本项目元数据(如产品描述)的项目。

  • 您不能将互动和项目数据集链接到一个表达式中。要创建按 Interwork 和 Item 数据集(或相反)进行筛选的筛选器,必须将两个或更多表达式链接在一起。有关更多信息,请参阅 组合多个表达式

  • 您无法创建使用架构中具有布尔类型的值进行过滤的过滤器表达式。要根据布尔值进行筛选,请使用带有类型字段的模式字符串然后使用这些值"True""False"在您的数据中。或者你可以使用 typeint要么和价值01.

筛选表达式元素

使用以下元素创建过滤器表达式:

包括或排除

使用INCLUDE将推荐限制为仅限于符合筛选条件的商品要么使用EXCLUDE删除所有符合筛选条件的项目。

itemID/用户ID

使用ItemIDINCLUDE要么EXCLUDE用于筛选项目推荐的元素。使用UserId用于从用户细分过滤用户。

WHERE

使用WHERE以检查物品或用户的状况。您必须使用WHERE之后的元素ItemID要么UserID.

和/或

要将多个条件链接在同一个过滤器表达式中,请使用AND要么OR. 使用链接在一起的条件AND要么OR只能影响第一个条件中使用的数据集的属性。

DataSet. 属性

提供要在中筛选推荐的数据集和元数据属性dataset.property格式的日期和时间。例如,要根据 Item 数据集中的类型属性进行筛选,您可以在过滤器表达式中使用 items.Genres。您不能根据文本项目元数据使用筛选器包含或排除项目。

IF 条件

使用IF条件仅限检查条件CurrentUser仅限一次在表达式末尾。但是,您可以将IF使用条件AND.

当前用户 .属性

要根据您获得推荐的用户筛选项目推荐,请在仅限IF 条件,请使用CurrentUser并提供用户属性。例如:CurrentUser.AGE

IN/NOT IN

使用IN要么NOT IN作为比较运算符来根据匹配(或不匹配)一个或多个字符串值进行筛选。Amazon Personalize 化仅筛选确切的字符串。

比较运算符

使用 =、<、<=、>、>= 运算符测试数值数据是否相等。

星号 (*) 字符

使用*包含或排除所有类型的交互。使用* 仅限对于使用EVENT_TYPE一个的财产Interactions数据集。

管道分隔器

使用管道分离器 (|) 将多个表达式链接在一起。有关更多信息,请参阅 组合多个表达式

参数

对于使用的表达式=IN运算符,使用美元符号 ($) 和参数名称将占位符参数添加为值。例如:$GENRES。在此示例中,当您获得推荐时,您可以提供要筛选的类型或类型。有关可以使用的参数数量的信息,请参阅Service Quotas.

注意

在将参数添加到表达式时,可以定义参数名称。参数名称不必与属性名称匹配。我们建议您使用与属性名称类似且易于记住的参数名称。当您将筛选器应用于推荐请求时,您可以使用参数名称(区分大小写)。

筛选表达式示例

使用以下部分中的筛选表达式来了解如何构建自己的筛选器表达式。

项目推荐筛选器表达

以下筛选器表达式显示了如何根据交互、项目元数据和用户元数据筛选项目建议。它们按数据类型进行组织。

交互数据

以下表达式根据事件类型(例如点击)或您在使用获取建议时指定的事件类型排除项目$EVENT_TYPE参数。

EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ($EVENT_TYPE)

以下表达式排除用户单击或直播的项目。

EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("click", "stream")

以下表达式仅包括用户点击的项目。

INCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("click")

物品数据

以下表达式根据您在获得推荐时使用$CATEGORY参数。

EXCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY)

以下表达式排除shoe该类别不要有一个描述boot.

EXCLUDE ItemID WHERE Items.CATEGORY IN ("shoe") AND Items.DESCRIPTION NOT IN ("boot")

以下表达式仅包括您在获得推荐时使用$GENRE参数。

INCLUDE ItemID WHERE Items.GENRE IN ($GENRE)

用户数据

以下表达式排除了您在获得推荐时使用$GENRE参数,但前提是当前用户的年龄等于当前用户使用$AGE参数。

EXCLUDE ItemID WHERE Items.GENRE IN ($GENRE) IF CurrentUser.AGE = $AGE

以下表达式仅包括watch类别,并说明luxury,如果当前用户的年龄结束18.

INCLUDE ItemID WHERE Items.CATEGORY IN ("watch") AND Items.DESCRIPTION IN ("luxury") IF CurrentUser.AGE > 18

用户段筛选器表达式

以下筛选器表达式显示了如何根据交互数据和用户元数据筛选用户细分。它们按数据类型进行组织。

用户数据

以下筛选表达式仅包括成员资格状态等于获取用户细分时指定的值的用户。

INCLUDE UserID WHERE Users.MEMBERSHIP_STATUS IN ($MEMBERSHIP)

以下过滤器表达式排除了具有AGE小于 18。

EXCLUDE UserID WHERE Users.AGE < 18

交互数据

以下筛选表达式仅包括已点击或评级项目的用户。

INCLUDE UserID WHERE Interactions.EVENT_TYPE IN ("click, rating")

以下过滤器表达式将用户细分排除在用户细分时与您指定的事件类型进行交互的用户细分。

EXCLUDE UserID WHERE Interactions.EVENT_TYPE IN ($EVENT_TYPE)

组合多个表达式

要使用一个过滤器按项目和交互数据集进行筛选,请使用管道分隔符将多个表达式组合在|)。首先对每个表达式进行独立评估,结果可以是并集或两个结果的交集。

示例匹配表达式

如果两个表达式都用EXCLUDE或者两个表达式都用INCLUDE,结果是两个结果的联合,如下所示(A 和 B 是不同的表达式):

  • Exclude A | Exclude B等于Exclude result from A or result from B

  • Include A | Include B等于Include result from A or result from B

以下示例演示如何结合使用的两个表达式:INCLUDE. 第一个表达式仅包含具有一个或多个类别的项目,这些项目在您使用$CATEGORY参数。第二个表达式包括用户标记为favorite. 推荐仅包括具有您指定类别的商品以及用户已标记为收藏夹的商品。

INCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY) | INCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("favorite")

包括和排除示例

如果使用一个或多个表达式INCLUDE还有一个表达式使用EXCLUDE,结果是减去EXCLUDE源于表达式INCLUDE表达式结果如下(A、B、C 和 D 是不同的表达式)。

  • Include A | Exclude B等于Include result from A - result from B

  • Include A | Include B | Exclude C | Exclude D等于Include (A or B) - (C or D)

表达顺序不重要:如果 EXCLUDE 表达式出现在 INCLUDE 表达式之前,则结果是相同的。

以下示例演示如何结合使用INCLUDE表达式和EXCLUDE表达式。第一个表达式仅包括您在获得推荐时使用$GENRE参数。第二个表达式排除用户点击或直播的项目。推荐将仅包括您指定的类型但尚未点击或直播的项目。

INCLUDE ItemID WHERE Items.GENRE IN ($GENRE) | EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("click", "stream")