5

我正在使用 Amazon Personalize 创建推荐引擎。我必须为它发送以下数据,

USER_ID,ITEM_ID,EVENT_TYPE,EVENT_VALUE,TIMESTAMP

我不明白EVENT_TYPE里面EVENT_VALUE是什么。

4

1 回答 1

8

简短说明

EVENT_TYPE、EVENT_VALUE是可选的,如果您刚开始使用 AWS Personalize,您可以暂时跳过它们。

EVENT_TYPE是存储在数据集中的交互事件类型。交互是用户与项目的交互。

EVENT_VALUE是交互事件的值。

也许例子会让它更容易理解:

  • USER_ID - YouTube 用户 ID
  • ITEM_ID - YouTube 视频
  • EVENT_TYPE - video_score,用户喜欢或不喜欢视频
  • EVENT_VALUE - 1 表示喜欢,-1 表示不喜欢
  • TIMESTAMP - 用户何时观看视频

长解释

让我们从头开始,在 AWS Personalize 中,您有 3 种不同类型的数据集:

  1. 用户
  2. 项目
  3. 互动

数据集的内容取决于您的用例,例如,如果您想为使用视频共享平台的用户推荐视频,那么您的数据集可能包含如下所示的数据:

  1. 用户:USER_ID、USER_NAME、USER_LAST_LOGIN [...] 等。
  2. 项目:VIDEO_ID、VIDEO_CATEGORY、VIDEO_VIEWS [...] 等。
  3. 交互:USER_ID、VIDEO_ID、EVENT_TYPE、EVENT_VALUE、TIMESTAMP

但要使其与 AWS Personalize 兼容,您应该转换属性名称以匹配 Personalize 要求:

  1. 用户:USER_ID、USER_NAME、USER_LAST_LOGIN [...] 等。
  2. 项目:ITEM_ID、ITEM_CATEGORY、ITEM_VIEWS [...] 等。
  3. 交互:USER_ID、ITEM_ID、EVENT_TYPE、EVENT_VALUE、TIMESTAMP

如您所见,交互数据集包含以下信息:

  1. 谁(USER_ID)与谁进行了交互..
  2. ..什么项目(ITEM_ID)..
  3. ..在哪个时间(TIMESTAMP)。

或者,您可以通过提供EVENT_TYPEEVENT_VALUE向此交互数据集添加更多信息。例如,它会是这样的:

  1. 谁(USER_ID)与谁进行了交互..
  2. ..什么项目(ITEM_ID)..
  3. ..在哪个时间(TIMESTAMP)..
  4. ..这是什么类型的交互(EVENT_TYPE)..
  5. ..互动的价值是什么(EVENT_VALUE)。

在提供视频内容的服务中,例如,EVENT_TYPE可以是video_view,而EVENT_VALUE的值将介于 0.0 和 1.0 之间,这将显示用户观看了多少视频。例如,0.5 将是视频的 50%。

EVENT_TYPEEVENT_VALUE是可选的,因此您不必提供它们,但它不会影响推荐的质量。EVENT_VALUE仅用于 Personalize 的配置(稍后会详细介绍)

还有一种情况,你应该记住。如果您仅提供EVENT_TYPEEVENT_VALUE,AWS Personalize 将给您一个错误,因为您需要这两个或一个都不需要(这是有道理的,因为存储具有未知值或类型的事件数据没有意义)。

EVENT_TYPE不必只是video_view。它也可以有不同的值,例如,如果用户想要喜欢视频,您的应用程序将像这样保存此交互:

EVENT_TYPE = '喜欢'
EVENT_VALUE = 1

对于不喜欢可能是:

EVENT_TYPE = '喜欢'
EVENT_VALUE = -1

事件值的使用

通常,Personalize 在模型训练期间不包括事件值。它只是被忽略了。

但是,您可以使用它来实现您自己的逻辑。例如,您可以在解决方案创建期间提供事件值阈值: 个性化创建解决方案 Web 控制台

在解决方案训练期间,此值阈值将用于确定是否应忽略给定的交互。例如,如果事件值是观看视频的百分比进度,则阈值为 0.9 将确保比训练期间包含的交互更接近完整观看视频。

此外,如上图所示,您可以指定事件类型本身,因此给定的解决方案将忽略所有与事件类型不匹配的交互。在某些情况下可能会有所帮助。

事件类型也可以在几个月前添加的过滤器选项中使用。过滤掉用户已经完全观看或购买的项目可能会有所帮助,例如:

EXCLUDE itemId WHERE INTERACTIONS.event_type in ("fully_watched")

EXCLUDE itemId WHERE INTERACTIONS.event_type in ("purchased")
于 2019-09-19T13:16:14.260 回答