0

我想获得历史上用户购买最多的产品。我目前正在使用 USER_PERSONALIZATION 配方,但 GetRecommendations 总是返回错误的结果。请帮忙。

这是我与用户 id: 的交互数据f5504cb0-0f0e-11e9-b513-bb78938fd0f8,他/她购买了 10 次,并且他/她没有购买具有 id 的产品1A3DTA986EEBT

在此处输入图像描述

这是我的代码和结果

在此处输入图像描述

在此处输入图像描述

如您所见,顶级产品不是他/她购买的产品。感谢您的帮助。

4

1 回答 1

0

Amazon Personalize 根据您的数据构建基于机器学习的推荐器。因此,它旨在根据用户过去的行为(交互)和与之交互的项目/产品的属性来预测用户现在对什么感兴趣。一些考虑:

数据驱动方法

尽管您可以将购买历史记录导入 Personalize,但它并非设计为您可以查询的数据存储。如果您只是想要一个用户最常购买的产品列表,那么数据库可能是一个更好的工具。例如,someuser要从存储订单的关系数据库OrderOrderDetail表中获取用户购买最多的前 10 种产品,SQL 可能如下所示:

SELECT od.ItemID, COUNT(*) AS PurchaseCount
FROM Order AS o, OrderDetail AS od
WHERE o.UserID = 'someuser'
AND o.OrderID = od.OrderID
GROUP BY ItemID
ORDER BY PurchaseCount DESC
LIMIT 10

推荐驱动方法

如果您的用例更像“考虑到用户最近的购买,他们可能有兴趣再次购买什么”,则可以使用 Personalize。以下是一般步骤。

  • 创建个性化自定义数据集组。
  • 在数据集组中创建交互数据集。您的交互数据集模式应至少具有USER_IDITEM_IDTIMESTAMPEVENT_TYPE
  • 为上述架构中定义的列中的所有用户创建一个包含购买历史记录的 CSV。产品 ID 是ITEM_ID,购买日期是TIMESTAMP,像“购买”这样的东西EVENT_TYPE
  • aws-user-personalization使用配方创建解决方案。
  • 为解决方案创建解决方案版本。
  • 为解决方案版本创建个性化营销活动。
  • 创建一个仅包含用户最近购买的产品的过滤器。例如,INCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("Purchase")
  • 使用上面创建的过滤器调用GetRecommendations活动的 API。

一个重要的警告是,在过滤交互历史记录时,Personalize 当前仅考虑每个用户最近的 200 个历史交互(在批量导入中)和最近的 100 个实时事件(通过PutEventsAPI 发送)。

于 2022-01-10T15:39:54.333 回答